/*** 需求:模拟实现斗地主的分牌情形* 分析:  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练习:模拟试下你斗地主的洗牌、发牌、看牌功能相关推荐

  1. Java实现扑克牌的洗牌发牌看牌

    需求: 通过程序实现斗地主过程中的洗牌,发牌和看牌 方法一: 只看到每位用户手中的牌: 思路: 1:创建一个牌盒, 也就是定义一个集合对象,用ArrayList集合实现 2:往牌盒里面装牌 3:洗牌, ...

  2. 18.集合框架(Map集合,HashMap和Hashtable的区别,Collections(集合工具类),集合练习,模拟斗地主(洗牌,发牌,看牌))

    1.Map集合概述和特点 1.需求:    根据学号获取学生姓名 2.Map接口概述     查看API可以知道:     将键映射到值的对象     一个映射不能包含重复的键     每个键最多只能 ...

  3. Java 存牌洗牌发牌看牌

    package www.test1.com;import java.util.*;/*** 思路:* 存牌(HashMap)* 存下标(ArrayList)* 洗牌(洗下标)* 发牌 (TreeSet ...

  4. java:模拟酒店订房,退房,打印所有房间状态等功能

    要求: 1.使用二维数组来模拟酒店 2.酒店中每一个房间都是一个对象 3.每一个房间都应该有:房间编号,房间类型,房间状态 4.系统对外提供的功能: 可以查看房间状态: 可以订房退房. (以下有程序截 ...

  5. java集合框架的练习之斗地主洗牌发牌的模拟(升级版)

    首先,奉上java集合框架的练习之斗地主洗牌发牌的模拟(初级版)的链接:http://blog.csdn.net/striner/article/details/78489306 初级版只具有洗牌发牌 ...

  6. java中Map集合、模拟斗地主洗牌发牌、JDK9对集合添加的优化

    1.1 Map集合概述 Map集合概述 Map==>映射(一个对应一个) Map是一个接口,只要实现了该接口的类都是双列集合. 双列集合每次存储元素时都需要存储两个元素,一个元素称为键,一个元素 ...

  7. Java实现模拟斗地主洗牌发牌

    按照斗地主的规则,完成洗牌发牌看牌的动作.最终结果预计为: 具体规则: 1.组装54张扑克牌 2.将54张扑克牌顺序打乱 3.三个玩家参与游戏,三人交替摸牌,每人17张,最后三张做底牌 4.查看三人手 ...

  8. Java实现模拟斗地主洗牌、发牌、看牌并排序

    1.模拟斗地主洗牌.发牌.看牌 /* * 模拟斗地主洗牌.发牌.看牌*/package PokerDemo;import java.util.ArrayList; import java.util.C ...

  9. Java实现模拟斗地主发牌和排序

    需求:实现斗地主发牌看牌功能,并且要求按照规则排序. 思路: 1,创建HashMap,键是编号,值是牌. 2,创建Arraylist,存储编号. 3,创建花色数组和点数数组. 4,从0开始往HashM ...

最新文章

  1. 《PHP精粹:编写高效PHP代码》——2.1节数据持久化和Web应用程序
  2. 51单片机 自动重装载值计算
  3. J.U.C系列(一)CountDownLatch的使用
  4. Vue.js – 基于 MVVM 实现交互式的 Web 界面
  5. 【阿里妈妈数据科学系列】第三篇:离线抽样框架下的AB Test
  6. JavaScript对象与事件
  7. 【数据结构基础笔记】【顺序表】
  8. Spyder清除Variable Explorer手动安装protobuf3.0(为了配置windows的python接口)
  9. JDK1.5英文版CHM文档下载地址
  10. 【转】每天一个linux命令(11):nl命令
  11. Lifo管理系统(转载)
  12. 360手机助手电脑版 v2.4.0.1251 官方版
  13. c语言编程 模拟掷骰子,用C语言编写一个模拟掷骰子游戏
  14. 首发|罗振宇2018“时间的朋友”跨年演讲未删减全文
  15. 裴波那契数列的递归和动态规划算法
  16. 阿里大数据之路 总述
  17. 简易计算器,你值得拥有
  18. [渝粤教育] 西南科技大学 现代数字系统设计 在线考试复习资料2021版
  19. window10企业版永久密钥激活
  20. CSS3 变形:平移、旋转与缩放

热门文章

  1. Freebsd 下用 sshguard 防止暴力破解 ssh 密码
  2. 技术工坊|解密区块链DApp的代码逻辑,从请求到数据存储都要经历什么?(上海)...
  3. 【码云周刊第 68 期】数据可视化:商业智能的未来!
  4. 如何选择生产行业ERP系统?有哪些价值?
  5. Linux 性能分析的前 60 秒
  6. struts2 标签中read-only=true 和disabled的区别
  7. Yahoo网站性能优化的34条军规
  8. hdu1166 敌兵布阵
  9. FCKeditor.Net 2.6.3 配置说明与文件精简
  10. 320. Generalized Abbreviation-- back tracking and bit manipulation(待续)