Java 存牌洗牌发牌看牌
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 存牌洗牌发牌看牌相关推荐
- Java实现扑克牌的洗牌发牌看牌
需求: 通过程序实现斗地主过程中的洗牌,发牌和看牌 方法一: 只看到每位用户手中的牌: 思路: 1:创建一个牌盒, 也就是定义一个集合对象,用ArrayList集合实现 2:往牌盒里面装牌 3:洗牌, ...
- 18.集合框架(Map集合,HashMap和Hashtable的区别,Collections(集合工具类),集合练习,模拟斗地主(洗牌,发牌,看牌))
1.Map集合概述和特点 1.需求: 根据学号获取学生姓名 2.Map接口概述 查看API可以知道: 将键映射到值的对象 一个映射不能包含重复的键 每个键最多只能 ...
- 通过程序实现斗地主过程中的洗牌,发牌和看牌(简约版)
需求:通过程序实现斗地主过程中的洗牌,发牌和看牌 思路: 创建一个牌盒,也就是定义一个集合对象,用ArrayList集合实现 往牌盒里面装牌 洗牌,也就是说把牌打撒,用Collections的shuf ...
- java练习:模拟试下你斗地主的洗牌、发牌、看牌功能
/*** 需求:模拟实现斗地主的分牌情形* 分析: 1 模拟牌盒,存储54张牌,0-53 每个数字分别对应一张牌,用Map存储* 2 将0-53序号随机分发到三个人手中,欲实现序号的随机排序,考虑使用 ...
- Java实现模拟斗地主洗牌、发牌、看牌并排序
1.模拟斗地主洗牌.发牌.看牌 /* * 模拟斗地主洗牌.发牌.看牌*/package PokerDemo;import java.util.ArrayList; import java.util.C ...
- java 记牌_(笔记)JAVA--集合实现斗地主洗牌、发牌、看牌(利用TreeSet排序)
创建HashMap,键是编号,值是牌 创建ArrayList,存储编号 创建花色数组和点数数组 从0开始往HashMap里面存储编号,并存储对应的牌.同时往ArrayList里面存储编号 洗牌(洗的是 ...
- 使用Java集合实现麻将(准备牌、洗牌、发牌、看牌)
ArrayList简单实现麻将且排序 背景 实现业务逻辑 案例代码 背景 完成麻将1-9 的**洗牌发牌操作**(不包括:东西南北风.中发白) 麻将牌型科普: 1.条子:1-9每个数字*4 = 36张 ...
- 利用,ArrayList,HashMap,洗牌,发牌,看牌。
package MyProject.DouDiZhu;import java.util.*;public class MoNiDouDizhuB {public static void main(St ...
- java实现斗地主洗牌发牌功能
设计思路 初始化54张牌 洗牌 发牌 给玩家手牌排序 展示玩家手牌及3张底牌 实现思路 首先是54张牌要选择一种数据结构存放,这里选择List和Map集合都可以,我这里选择的是Map 要区分4种花色, ...
最新文章
- python查询sqlserver视图_基于odoo11上的SQL查询构建一个新的视图或模型
- 这是一份不完整的数据竞赛年鉴
- Homography matrix(单应性矩阵)在广告投放中的实践
- 论如何寻找万一的川财证券开户渠道
- Python 查看服务器磁盘信息
- springboot pom文件添加mysql组件_SpringBoot整合mybatis-plus+druid组件,实现增删改查
- [转载] python隐式转换_Python | 数据类型的转换 显式转换 隐式转换
- Windows 8.1 with Update MSDN 简体/英文/繁体
- 如何对接VOLVO EDI系统?
- win10系统定时自动切换深色模式
- spring-IOC注解部分笔记整理(观看IT黑马视频自学)
- 【工商银行科技菁英计划笔试】压缩字符串
- 动圈耳机振膜_耳机必看!谈动圈式耳机振膜技术
- python基础——while循环(九九乘法表,阶乘计算器,三角形图案打印输出)
- XAML 的摄氏度的符号
- 转运锦鲤(Transport of Koi Carp)
- 手机摄影-参数(快门)
- [openwrt] 使用ubus实现
- dubbo系列三、 服务发现RegistryDirectory
- 00014__广州市来穗人员积分制服务管理申办指南