package www.test1.com;import java.util.*;/*** 思路:* 存牌(HashMap)* 存下标(ArrayList)* 洗牌(洗下标)* 发牌 (TreeSet,使得到手的牌有序)* 看牌*/
public class MapStudy {public static void main(String[] args) {// 扑克以键值对的形式保存在 HashMap 中HashMap<Integer, String> pokerMap = new HashMap<Integer, String>();// 发牌的时候发的是 HashMap 的“键”(扑克对应下标),后期到了用户手里再通过“键”取“指”ArrayList<Integer> pokerList = new ArrayList<Integer>();// 发到用户手上是排序后的“键”,所以用 TreeSetTreeSet<Integer> pokerSet = new TreeSet<Integer>();String[] color = {"♥", "♣", "♦", "♠"};String[] poker = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};// 将54张扑克以键值对的形式存入 HashMap 中int pokerSuffix = 0;for (String poker_for : poker) {for (String color_for : color) {// 打印:♥3 ♣3 ♦3 ♠3...♥2 ♣2 ♦2 ♠2pokerMap.put(pokerSuffix, color_for + poker_for);// 将扑克下标存入 list,后期发牌使用pokerList.add(pokerSuffix);// 此时值是52pokerSuffix++;}}/*** 还差大王小王,单独存入* 打印 pokerMap: 0:♥3 1:♣3 2:♦3 3:♠3 。。。 51:♠2 52:queen 53:king* 打印 pokerList:[0,1,2, ... 52,53]*/pokerMap.put(pokerSuffix,"queen");pokerList.add(pokerSuffix++);pokerMap.put(pokerSuffix,"king");pokerList.add(pokerSuffix);// 生成随机顺序的下标(即发牌)Collections.shuffle(pokerList);// 发到这三个人手里,使用 TreeSet 可以使其得到的【下标】能够自然排序TreeSet<Integer> sunwukong = new TreeSet<Integer>();TreeSet<Integer> tangsanzang = new TreeSet<Integer>();TreeSet<Integer> zixia = new TreeSet<Integer>();// 底牌TreeSet<Integer> dipai = new TreeSet<Integer>();// 发牌,每人一张,发的也是下标int length = pokerList.size();for(int x = 0;x<length;x++){int n = pokerList.get(x);// 最后三张牌留作底牌if(x >= length - 3){dipai.add(n);// 三个人轮着发牌,每人一张,直到只剩下最后三张底牌}else if(x % 3 == 0){sunwukong.add(n);}else if(x % 3 == 1){tangsanzang.add(n);}else if(x % 3 == 2){zixia.add(n);}}showPoker("suwukong:",sunwukong,pokerMap);showPoker("tangsanzang:",tangsanzang,pokerMap);showPoker("zixia:",zixia,pokerMap);showPoker("dipai:",dipai,pokerMap);// 测试存入 pokerMap 的牌
//        Set<Integer> integers = pokerMap.keySet();
//        for (int j : integers) {//            System.out.print(j+":"+pokerMap.get(j) + " ");
//        }}// 看牌,根据牌的下标取出牌名public static void showPoker(String name,TreeSet<Integer> set,HashMap<Integer,String> map){System.out.print(name);for(int m :set){System.out.print(map.get(m)+" ");}System.out.println();}}结果(每次刷新):
suwukong:♣3 ♥4 ♣4 ♠4 ♦5 ♣6 ♣7 ♦7 ♥8 ♣9 ♥10 ♦J ♦Q ♥K ♣K queen king
tangsanzang:♦3 ♦4 ♠5 ♥6 ♦6 ♥7 ♠7 ♥9 ♥J ♠J ♣Q ♠Q ♥A ♦A ♣2 ♦2 ♠2
zixia:♥3 ♠3 ♥5 ♣5 ♠6 ♣8 ♦8 ♠8 ♦9 ♠9 ♣10 ♦10 ♠10 ♥Q ♠K ♠A ♥2
dipai:♣J ♦K ♣A

Java 存牌洗牌发牌看牌相关推荐

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

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

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

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

  3. 通过程序实现斗地主过程中的洗牌,发牌和看牌(简约版)

    需求:通过程序实现斗地主过程中的洗牌,发牌和看牌 思路: 创建一个牌盒,也就是定义一个集合对象,用ArrayList集合实现 往牌盒里面装牌 洗牌,也就是说把牌打撒,用Collections的shuf ...

  4. java练习:模拟试下你斗地主的洗牌、发牌、看牌功能

    /*** 需求:模拟实现斗地主的分牌情形* 分析: 1 模拟牌盒,存储54张牌,0-53 每个数字分别对应一张牌,用Map存储* 2 将0-53序号随机分发到三个人手中,欲实现序号的随机排序,考虑使用 ...

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

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

  6. java 记牌_(笔记)JAVA--集合实现斗地主洗牌、发牌、看牌(利用TreeSet排序)

    创建HashMap,键是编号,值是牌 创建ArrayList,存储编号 创建花色数组和点数数组 从0开始往HashMap里面存储编号,并存储对应的牌.同时往ArrayList里面存储编号 洗牌(洗的是 ...

  7. 使用Java集合实现麻将(准备牌、洗牌、发牌、看牌)

    ArrayList简单实现麻将且排序 背景 实现业务逻辑 案例代码 背景 完成麻将1-9 的**洗牌发牌操作**(不包括:东西南北风.中发白) 麻将牌型科普: 1.条子:1-9每个数字*4 = 36张 ...

  8. 利用,ArrayList,HashMap,洗牌,发牌,看牌。

    package MyProject.DouDiZhu;import java.util.*;public class MoNiDouDizhuB {public static void main(St ...

  9. java实现斗地主洗牌发牌功能

    设计思路 初始化54张牌 洗牌 发牌 给玩家手牌排序 展示玩家手牌及3张底牌 实现思路 首先是54张牌要选择一种数据结构存放,这里选择List和Map集合都可以,我这里选择的是Map 要区分4种花色, ...

最新文章

  1. python查询sqlserver视图_基于odoo11上的SQL查询构建一个新的视图或模型
  2. 这是一份不完整的数据竞赛年鉴
  3. Homography matrix(单应性矩阵)在广告投放中的实践
  4. 论如何寻找万一的川财证券开户渠道
  5. Python 查看服务器磁盘信息
  6. springboot pom文件添加mysql组件_SpringBoot整合mybatis-plus+druid组件,实现增删改查
  7. [转载] python隐式转换_Python | 数据类型的转换 显式转换 隐式转换
  8. Windows 8.1 with Update MSDN 简体/英文/繁体
  9. 如何对接VOLVO EDI系统?
  10. win10系统定时自动切换深色模式
  11. spring-IOC注解部分笔记整理(观看IT黑马视频自学)
  12. 【工商银行科技菁英计划笔试】压缩字符串
  13. 动圈耳机振膜_耳机必看!谈动圈式耳机振膜技术
  14. python基础——while循环(九九乘法表,阶乘计算器,三角形图案打印输出)
  15. XAML 的摄氏度的符号
  16. 转运锦鲤(Transport of Koi Carp)
  17. 手机摄影-参数(快门)
  18. [openwrt] 使用ubus实现
  19. dubbo系列三、 服务发现RegistryDirectory
  20. 00014__广州市来穗人员积分制服务管理申办指南

热门文章

  1. outlook邮件撤回
  2. 旅行comf HYSBZ - 1050
  3. inferred type_您最终可以使用var在Java中声明Inferred Type局部变量-这就是为什么它很棒...
  4. 实例7:stc8a8k定时器0,定时50ms,进入中断之后,加数20次到1秒,计算时间。
  5. 从零搭建Spring Boot脚手架:增加通用的功能2
  6. 前段时间的世界互联网大会
  7. Pytorch的一些小问题
  8. C# 正则表达式 Regex类的使用
  9. 如何把语音转换成文字呢?
  10. 【产品运营从0到1】资深产品运营推荐的互联网产品运营人员必看书籍