1. package cn.itcast_04;
  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.HashMap;
  5. import java.util.TreeSet;
  6. /*
  7. * 思路:
  8. *      A:创建一个HashMap集合
  9. *      B:创建一个ArrayList集合
  10. *      C:创建花色数组和点数数组
  11. *      D:从0开始往HashMap里面存储编号,并存储对应的牌
  12. *        同时往ArrayList里面存储编号即可。
  13. *      E:洗牌(洗的是编号)
  14. *      F:发牌(发的也是编号,为了保证编号是排序的,就创建TreeSet集合接收)
  15. *      G:看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)
  16. */
  17. public class PokerDemo {
  18. public static void main(String[] args) {
  19. // 创建一个HashMap集合
  20. HashMap<Integer, String> hm = new HashMap<Integer, String>();
  21. // 创建一个ArrayList集合
  22. ArrayList<Integer> array = new ArrayList<Integer>();
  23. // 创建花色数组和点数数组
  24. // 定义一个花色数组
  25. String[] colors = { "♠", "♥", "♣", "♦" };
  26. // 定义一个点数数组
  27. String[] numbers = { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q",
  28. "K", "A", "2", };
  29. // 从0开始往HashMap里面存储编号,并存储对应的牌,同时往ArrayList里面存储编号即可。
  30. int index = 0;
  31. for (String number : numbers) {
  32. for (String color : colors) {
  33. String poker = color.concat(number);
  34. hm.put(index, poker);
  35. array.add(index);
  36. index++;
  37. }
  38. }
  39. hm.put(index, "小王");
  40. array.add(index);
  41. index++;
  42. hm.put(index, "大王");
  43. array.add(index);
  44. // 洗牌(洗的是编号)
  45. Collections.shuffle(array);
  46. // 发牌(发的也是编号,为了保证编号是排序的,就创建TreeSet集合接收)
  47. TreeSet<Integer> fengQingYang = new TreeSet<Integer>();
  48. TreeSet<Integer> linQingXia = new TreeSet<Integer>();
  49. TreeSet<Integer> liuYi = new TreeSet<Integer>();
  50. TreeSet<Integer> diPai = new TreeSet<Integer>();
  51. for (int x = 0; x < array.size(); x++) {
  52. if (x >= array.size() - 3) {
  53. diPai.add(array.get(x));
  54. } else if (x % 3 == 0) {
  55. fengQingYang.add(array.get(x));
  56. } else if (x % 3 == 1) {
  57. linQingXia.add(array.get(x));
  58. } else if (x % 3 == 2) {
  59. liuYi.add(array.get(x));
  60. }
  61. }
  62. // 看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)
  63. lookPoker("风清扬", fengQingYang, hm);
  64. lookPoker("林青霞", linQingXia, hm);
  65. lookPoker("刘意", liuYi, hm);
  66. lookPoker("底牌", diPai, hm);
  67. }
  68. // 写看牌的功能
  69. public static void lookPoker(String name, TreeSet<Integer> ts,
  70. HashMap<Integer, String> hm) {
  71. System.out.print(name + "的牌是:");
  72. for (Integer key : ts) {
  73. String value = hm.get(key);
  74. System.out.print(value + " ");
  75. }
  76. System.out.println();
  77. }
  78. }

Java模拟斗地主发牌和洗牌的更多相关文章

  1. java 模拟斗地主发牌洗牌

    一 模拟斗地主洗牌发牌 1.案例需求 按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 1. 组装54张扑克牌 2. 将54张牌顺序打乱 3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张 ...

  2. java模拟斗地主发牌看牌

    import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; public class Dou ...

  3. java集合--模拟斗地主发牌洗牌

    import java.util.*; /** * @Date: 2020/6/17 19:53 */public class Test04 { public static void main(Str ...

  4. java斗地主扑克 扑克牌 洗牌 发牌 Collection 集合练习

    package com.swift.poker; import java.util.ArrayList; import java.util.Collections; /*训练考核知识点:Collect ...

  5. 实现斗地主纸牌游戏---洗牌 发牌 看底牌的具体功能------Map集合存储方法 遍历的应用

    该Demo只是斗地主的游戏的一部分,实现的斗地主的组合牌  洗牌  发牌 看牌的功能,主要应用Map集合进行练习 package cn.lijun import java.util.ArrayList ...

  6. Java模拟斗地主(实现大小排序)

    import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.Li ...

  7. Java实现斗地主发牌(Collections工具类的应用)

    package com.doudou_01; import java.util.ArrayList; import java.util.Collections; import java.util.Li ...

  8. Java 模拟斗地主

    模拟斗地主 public class M1 { public static void main(String args[]) { DouDiZhu02(); } private static void ...

  9. Java程序斗地主发牌代码,List、Map集合的应用

    Java集合存储的灵活运用List集合存储 54个编号 Map <key,value> key 对应的是编号 , value 是 牌的花色(红方梅黑)+ 具体的一张牌 ,比如 黑桃2 用2 ...

随机推荐

  1. vba判断文件是否存在的两种方法(转)

    方法1. 用VBA自带的dir()判断,代码如下: 在 Microsoft Windows 中, Dir 支持多字符 (*)和单字符 (?) 的通配符来指定多重文件 Function IsFileEx ...

  2. 9.Redis高可用-哨兵

    9.Redis高可用-哨兵9.1 基本概念9.1.1 主从复制的问题9.1.2 高可用9.1.3 Redis Sentinel的高可用性9.2 安装和部署9.2.1 部署拓扑结构9.2.2 部署Red ...

  3. mac sublime3 无法安装Package Control

    一.在线安装 1.打开sublime,Ctrl+` 打开控制台, 输入 import urllib.request,os,hashlib; h = '6f4c264a24d933ce70df5dedc ...

  4. UI交互设计关键词:情感化设计与心理

    情感化设计,一定有一个关键词.情感,是指人对周围事物和自身以及对自己行为的态度,它是人对客观事物的一种特殊的反映形式,是主体对外界刺激给予肯定或否定的心理反应,也是对客观事物是否符合自己需要的态度或体 ...

  5. oracle 索引提升查询速度, in 和 exist 效率

    做记录: 今天有一个有153万条数据的表,发现查询很慢: select count(y) as transfereeNum,x from t_ast_subject_invest_order GROU ...

  6. maven 在clean package时,出现:找不到符号 [ERROR] 符号: 方法 sqlDdlFilter(java.lang.String) 解决办法

    另一个项目中增加了,sqlDdlFilter 在调用的项目中clean package时,出现 找不到符号[ERROR] 符号: 方法 sqlDdlFilter(java.lang.String) 原 ...

  7. IDEA导入Maven多项目(Mac下)

    主界面Import Project 选择maven项目目录文件夹 选择Import project from external model 中的maven选项,Next下一步 Sources和Docu ...

  8. Effective C++ 笔记:条款 34 实现继承和接口继承

    Differentiate between inheritance of interface and inheritance of implementation. 行为含义 声明一个pure virt ...

  9. 开发HR人事考试系统介绍

    确定好需要开发的模块以及功能 一套人事考试系统主要模块: 1)组织管理:公司部门成员信息 2)人事管理:人事信息,离职管理,职务管理,岗位管理: 3)考勤管理:班次设置,停工放假,假日设置,刷卡记录, ...

  10. FileReader实现图片预览,并上传(js代码)

    var rFilter = /^(image\/bmp|image\/gif|image\/jpeg|image\/png|image\/tiff)$/i; //控制格式 var iMaxFilesi ...