java练习:模拟试下你斗地主的洗牌、发牌、看牌功能
/*** 需求:模拟实现斗地主的分牌情形* 分析: 1 模拟牌盒,存储54张牌,0-53 每个数字分别对应一张牌,用Map存储* 2 将0-53序号随机分发到三个人手中,欲实现序号的随机排序,考虑使用Collections.shuffle()* 因此序号使用ArrayList存储* 3 看牌,并且实现玩家手上的拍由小到大排序,所以考虑使用TreeSet存储*/
package fmi1;import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;public class PokerSimulate {/*** @param args*/public static void main(String[] args) {//建立牌盒String[] color = {"♦","♣","♥","♠"};//花色String[] size ={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};//大小//建立集合存牌HashMap<Integer, String> hm = new HashMap<Integer,String>();//循环组牌并存至集合int key = 0;for(String s1:size){for(String s2:color){String value = s2 + s1;hm.put(key, value);key++;}}hm.put(key++, "LKing");hm.put(key, "BKing");//输出牌printPoke(hm);//建立ArrayList实现牌的序号的随机分布ArrayList<Integer> al = new ArrayList<Integer>();//存序号for(int i = 0;i < 54;i++){al.add(i);}//洗牌Collections.shuffle(al);//新建3个玩家和一个底牌,即TreeSet集合TreeSet<Integer> gamer1 = new TreeSet<Integer>();TreeSet<Integer> gamer2 = new TreeSet<Integer>();TreeSet<Integer> gamer3 = new TreeSet<Integer>();TreeSet<Integer> dipai = new TreeSet<Integer>();//发牌for(int i = 0;i<al.size();i++){if(i >= al.size()-3)dipai.add(al.get(i));else if(i%3==0)gamer1.add(al.get(i));else if(i%3==1)gamer2.add(al.get(i));else gamer3.add(al.get(i));}
// System.out.println(gamer1);
// System.out.println(gamer2);
// System.out.println(gamer3);
// System.out.println(dipai);//看牌System.out.println("玩家1:");checkPoker(gamer1,hm);System.out.println("玩家2:");checkPoker(gamer2,hm);System.out.println("玩家3:");checkPoker(gamer3,hm);System.out.println("底牌:");checkPoker(dipai,hm);}private static void checkPoker(TreeSet<Integer> gamer,HashMap<Integer, String> hm) {for(int key:gamer){
// System.out.print(key+" ");System.out.print(hm.get(key)+" ");}System.out.println();}private static void printPoke(HashMap<Integer, String> hm) {System.out.print("扑克牌:");for (int i = 0; i < hm.size(); i++) {if (i % 4 == 0)System.out.println();System.out.print(hm.get(i) + "\t");}System.out.println();}}
运行结果
扑克牌:
♦3 ♣3 ♥3 ♠3
♦4 ♣4 ♥4 ♠4
♦5 ♣5 ♥5 ♠5
♦6 ♣6 ♥6 ♠6
♦7 ♣7 ♥7 ♠7
♦8 ♣8 ♥8 ♠8
♦9 ♣9 ♥9 ♠9
♦10 ♣10 ♥10 ♠10
♦J ♣J ♥J ♠J
♦Q ♣Q ♥Q ♠Q
♦K ♣K ♥K ♠K
♦A ♣A ♥A ♠A
♦2 ♣2 ♥2 ♠2
LKing BKing
玩家1:
♣3 ♦4 ♠5 ♦6 ♣7 ♥7 ♠7 ♦9 ♣10 ♠J ♣Q ♥Q ♦K ♦A ♦2 ♠2 LKing
玩家2:
♦3 ♥3 ♠4 ♦5 ♣6 ♦8 ♣9 ♥9 ♥10 ♦J ♣J ♥J ♠Q ♣K ♣A ♥A ♣2
玩家3:
♠3 ♣4 ♥4 ♣5 ♥5 ♥6 ♦7 ♥8 ♠8 ♠9 ♦10 ♦Q ♥K ♠K ♠A ♥2 BKing
底牌:
♠6 ♣8 ♠10
java练习:模拟试下你斗地主的洗牌、发牌、看牌功能相关推荐
- Java实现扑克牌的洗牌发牌看牌
需求: 通过程序实现斗地主过程中的洗牌,发牌和看牌 方法一: 只看到每位用户手中的牌: 思路: 1:创建一个牌盒, 也就是定义一个集合对象,用ArrayList集合实现 2:往牌盒里面装牌 3:洗牌, ...
- 18.集合框架(Map集合,HashMap和Hashtable的区别,Collections(集合工具类),集合练习,模拟斗地主(洗牌,发牌,看牌))
1.Map集合概述和特点 1.需求: 根据学号获取学生姓名 2.Map接口概述 查看API可以知道: 将键映射到值的对象 一个映射不能包含重复的键 每个键最多只能 ...
- Java 存牌洗牌发牌看牌
package www.test1.com;import java.util.*;/*** 思路:* 存牌(HashMap)* 存下标(ArrayList)* 洗牌(洗下标)* 发牌 (TreeSet ...
- java:模拟酒店订房,退房,打印所有房间状态等功能
要求: 1.使用二维数组来模拟酒店 2.酒店中每一个房间都是一个对象 3.每一个房间都应该有:房间编号,房间类型,房间状态 4.系统对外提供的功能: 可以查看房间状态: 可以订房退房. (以下有程序截 ...
- java集合框架的练习之斗地主洗牌发牌的模拟(升级版)
首先,奉上java集合框架的练习之斗地主洗牌发牌的模拟(初级版)的链接:http://blog.csdn.net/striner/article/details/78489306 初级版只具有洗牌发牌 ...
- java中Map集合、模拟斗地主洗牌发牌、JDK9对集合添加的优化
1.1 Map集合概述 Map集合概述 Map==>映射(一个对应一个) Map是一个接口,只要实现了该接口的类都是双列集合. 双列集合每次存储元素时都需要存储两个元素,一个元素称为键,一个元素 ...
- Java实现模拟斗地主洗牌发牌
按照斗地主的规则,完成洗牌发牌看牌的动作.最终结果预计为: 具体规则: 1.组装54张扑克牌 2.将54张扑克牌顺序打乱 3.三个玩家参与游戏,三人交替摸牌,每人17张,最后三张做底牌 4.查看三人手 ...
- Java实现模拟斗地主洗牌、发牌、看牌并排序
1.模拟斗地主洗牌.发牌.看牌 /* * 模拟斗地主洗牌.发牌.看牌*/package PokerDemo;import java.util.ArrayList; import java.util.C ...
- Java实现模拟斗地主发牌和排序
需求:实现斗地主发牌看牌功能,并且要求按照规则排序. 思路: 1,创建HashMap,键是编号,值是牌. 2,创建Arraylist,存储编号. 3,创建花色数组和点数数组. 4,从0开始往HashM ...
最新文章
- 《PHP精粹:编写高效PHP代码》——2.1节数据持久化和Web应用程序
- 51单片机 自动重装载值计算
- J.U.C系列(一)CountDownLatch的使用
- Vue.js – 基于 MVVM 实现交互式的 Web 界面
- 【阿里妈妈数据科学系列】第三篇:离线抽样框架下的AB Test
- JavaScript对象与事件
- 【数据结构基础笔记】【顺序表】
- Spyder清除Variable Explorer手动安装protobuf3.0(为了配置windows的python接口)
- JDK1.5英文版CHM文档下载地址
- 【转】每天一个linux命令(11):nl命令
- Lifo管理系统(转载)
- 360手机助手电脑版 v2.4.0.1251 官方版
- c语言编程 模拟掷骰子,用C语言编写一个模拟掷骰子游戏
- 首发|罗振宇2018“时间的朋友”跨年演讲未删减全文
- 裴波那契数列的递归和动态规划算法
- 阿里大数据之路 总述
- 简易计算器,你值得拥有
- [渝粤教育] 西南科技大学 现代数字系统设计 在线考试复习资料2021版
- window10企业版永久密钥激活
- CSS3 变形:平移、旋转与缩放
热门文章
- Freebsd 下用 sshguard 防止暴力破解 ssh 密码
- 技术工坊|解密区块链DApp的代码逻辑,从请求到数据存储都要经历什么?(上海)...
- 【码云周刊第 68 期】数据可视化:商业智能的未来!
- 如何选择生产行业ERP系统?有哪些价值?
- Linux 性能分析的前 60 秒
- struts2 标签中read-only=true 和disabled的区别
- Yahoo网站性能优化的34条军规
- hdu1166 敌兵布阵
- FCKeditor.Net 2.6.3 配置说明与文件精简
- 320. Generalized Abbreviation-- back tracking and bit manipulation(待续)