如何使用java集合模拟实现斗地主洗牌和发牌
发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,这篇文章给大家分享的是有关如何使用java集合模拟实现斗地主洗牌和发牌的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1:用ArrayList集合实现案例分析:我们现在要做的
千家信息网最后更新 2025年02月05日如何使用java集合模拟实现斗地主洗牌和发牌
这篇文章给大家分享的是有关如何使用java集合模拟实现斗地主洗牌和发牌的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
1:用ArrayList集合实现
案例分析:
我们现在要做的是模拟斗地主小游戏来进行洗牌和发牌。
具体步骤:
A:首先,创建一个ArrayList集合来存储牌,将牌的花色和点数存储在俩个字符串数组中中,然后用for循环加强遍历将每张牌的花色点数及大王小王存储在集合中。
B:进行洗牌,调用collectionas的shuffle方法。
C:进行发牌,创建四个ArrayList集合,分别用来存储玩家一,玩家二,玩家三,和底牌对应发到手上的牌。然后用for循环遍历这幅扑克牌用If语句判断,然后发牌。
D:创建一个看牌的方法,调用即可。
具体代码:
package com.study_01;import java.util.ArrayList;import java.util.Collections;import java.util.List;/* * 模拟斗地主洗牌和发牌 * 分析步骤: * 1:创建一个集合来存储牌 * 2:洗牌 * 3:发牌 * 4:看牌 * */public class Poker1 { public static void main(String[] args) { //创建一个集合来存牌 ArrayListPokers=new ArrayList<>(); String[] colors={"♠","♥","♦","♣"}; String[] numbers={"3","4","5","6","7","8","9","10","J","Q","K","A","2"}; for(String color:colors){ for(String number:numbers){ Pokers.add(color+number); } Pokers.add("大王"); Pokers.add("小王"); }//洗牌 Collections.shuffle(Pokers); //发牌 /*创建四个集合来存储 * 1:张三 * 2:李四 * 3:王麻 * 4:底牌 */ ArrayList Zhangsan=new ArrayList<>(); ArrayList Lisi=new ArrayList<>(); ArrayList Wangma=new ArrayList<>(); ArrayList Dipai=new ArrayList<>(); for(int i=0;i =Pokers.size()-3){ Dipai.add(Pokers.get(i)); }else if(i%3==0){ Zhangsan.add(Pokers.get(i)); }else if(i%3==1){ Lisi.add(Pokers.get(i)); }else if(i%3==2){ Wangma.add(Pokers.get(i)); } }//看牌 lookPokers("张三",Zhangsan); lookPokers("李四",Lisi); lookPokers("王麻",Wangma); lookPokers("底牌",Dipai); } private static void lookPokers(String name, ArrayList Pokers){ System.out.println(name+"的牌是:"); for(String poker:Pokers){ System.out.print(poker+" "); }System.out.println(); } }
运行结果:
2:用TreeMap集合实现
具体步骤:
A:创建TreeMap集合存储牌,并且大的键对应大的牌,小的键对应小的牌,同上创建俩个数组,一个用来存储花色,一个用来存储点数,另外创建一个ArrayList集合,用来存储没有任意一张牌对应的索引。
B:.洗牌,洗的是索引(map集合中每一张牌对应的键),我们这里用的是ArrayList来存储。
C:发牌,发的索引,并且对这个索引进行排序,这是利用了TreeSet的有序性。
D:看牌,根据发到的索引去map集合中找出对应的值。
具体代码:
package com.study_01;import java.util.ArrayList;import java.util.Collections;import java.util.TreeMap;import java.util.TreeSet;/** * 1.创建Map集合存储牌,并且大的键对应大的牌,小的键对应小的牌 * 2.洗牌,洗的是索引(map集合中每一张牌对应的键) * 3.发牌,发的索引,并且岁这个索引进行排序 * 4.看牌,根据发到的键去map集合中找出对应的值 */public class Poker2 { public static void main(String[] args) { //创建一个TreeMap集合 TreeMapPokers=new TreeMap<>(); String[] colors={"♥","♠","♦","♣"}; String[] numbers={"3","4","5","6","7","8","9","10","J","Q","K","A","2",}; //创建一个ArrayList集合,用来存储没有一张牌对应的索引 ArrayList indexs=new ArrayList<>(); int index = 0; for(String color:colors){ for(String number:numbers){ Pokers.put(index, color+number); indexs.add(index); index++; }//存大王,小王 Pokers.put(index, "大王"); indexs.add(index); index++; Pokers.put(index, "小王"); indexs.add(index); index++; }//洗牌,洗的是索引(map集合中每一张牌对应的键) Collections.shuffle(indexs); //发牌,发的是索引根据索引来找它对应的值 TreeSet zhangsan=new TreeSet<>(); TreeSet lisi=new TreeSet<>(); TreeSet wangma=new TreeSet<>(); TreeSet dipai=new TreeSet<>(); for(int i=0;i =Pokers.size()-3){ dipai.add(indexs.get(i)); }else if(i%3==0){ zhangsan.add(indexs.get(i)); }else if(i%3==1){ lisi.add(indexs.get(i)); }else if(i%3==2){ wangma.add(indexs.get(i)); } }//看牌 lookPoker("张三",zhangsan,Pokers); lookPoker("李四",lisi,Pokers); lookPoker("王麻",wangma,Pokers); lookPoker("底牌",dipai,Pokers); } private static void lookPoker(String name, TreeSet indexs, TreeMap Pokers) { System.out.println(name+"的牌是:"); for(Integer index:indexs){ System.out.print(Pokers.get(index)); }System.out.println(); }}
运行结果:
感谢各位的阅读!关于"如何使用java集合模拟实现斗地主洗牌和发牌"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
存储
索引
斗地主
大王
底牌
小王
步骤
点数
玩家
花色
张三
李四
代码
内容
方法
更多
篇文章
结果
应大
建四
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全渗透测试优化
网络安全利与弊
计算机服务器地址怎么填
网上那个很多代码的数据库叫什么
北京联想软件开发
乐山网络安全周金融日
数据库怎么判断视图等价
兔兔网络技术有限公司
镇江网络安全审计系统咨询公司
快递软件开发的目的
全国网络安全会上的讲话
图书馆数据库系统的改进地方
计算机网络安全等级分
水浒传小说软件开发
山东盈实互联网科技可信吗
科技部海外人才数据库研讨会
腾讯云服务器可以搭建几个ip
点餐小程序数据库图
药役服务器
晋中信息学院毕业论文数据库
网络安全软件学习app
泸水网络安全义务
乐山网络安全周金融日
天象网络技术有限公司杭州
部队防范网络安全观后感
山东现代软件开发价格表格
常规网络技术厂家供应
东城区进口软件开发调试
网络安全健康教育ppt
h2数据库如何插入时间