如何用Java写一个斗地主
发表于:2025-02-19 作者:千家信息网编辑
千家信息网最后更新 2025年02月19日,这篇文章主要讲解了"如何用Java写一个斗地主",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何用Java写一个斗地主"吧!思路:1.创建HashMa
千家信息网最后更新 2025年02月19日如何用Java写一个斗地主
这篇文章主要讲解了"如何用Java写一个斗地主",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何用Java写一个斗地主"吧!
思路:
1.创建HashMap,键是编号,值是牌。
2.创建ArrayList,存储编号。
3.创建花色数组和点数数组。
4.从0开始往HashMap里面存储编号,并存储对应的牌。同时往ArrayList里面存储编号。
5.洗牌(洗的是编号),用Collections的shuffl()方法实现。
6.发牌(发的也是编号,为了保证编号是排序的,创建TreeSet集合。
7.定义方法看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)
8.调用看牌方法
具体代码实现:
1.创建集合装扑克牌
//创建HashMap集合 key是编号用Integer value是牌用String HashMap hm=new HashMap<>(); //创建ArrayList集合用来存储编号 ArrayList list=new ArrayList<>(); //创建花色数组和点数数组 String [] color={"♠", "♦", "♥","♣"}; String [] number={"3","4","5","6","7","8","9","10","J","Q","K","A","2"}; //从0开始往HashMap集合里面存储编号,并存储对应的牌。同时往ArrayList集合里面存储编号 int index=0; //增强For循环存储花色和点数 for(String num:number){ for(String col:color){ hm.put(index,col+num); list.add(index); index++; } } //52张牌存完了 还剩大小王 现在添加进去 hm.put(index,"小王"); list.add(index); index++; hm.put(index,"大王"); list.add(index); //以上的操作实现了把54张扑克牌放入一个集合容器。
2.洗牌和发牌
//洗牌(洗的是编号),用collections的shuffle()方法实现。 Collections.shuffle(list); //发牌 用TreeSet接收 用三位玩家名字命名 TreeSet PDD=new TreeSet<>(); TreeSet DaSiMa=new TreeSet<>(); TreeSet LuBenWei=new TreeSet<>(); //三张底牌 TreeSet finalCard=new TreeSet<>(); for(int x=0;x=list.size()-3){ finalCard.add(a); }else if(x%3 == 0){ PDD.add(a); }else if(x%3 == 1){ DaSiMa.add(a); }else { LuBenWei.add(a); } }
3.定义看牌方法
//定义看牌的方法(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌) public static void lookPoker(String name,TreeSet ts,HashMap hm ){ System.out.print(name+"的手牌为:"); //遍历牌 就是遍历索引 for(Integer key:ts){ String poker = hm.get(key); System.out.print(poker+" "); } System.out.println(); }
原码:
package 模拟斗地主; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.TreeSet; /*需求: 通过程序实现 斗地主过程中的洗牌,发牌和看牌功能,并且为了方便看牌手牌要排序。 思路: 1:创建HashMap集合,键是编号,值是牌。 2:创建Arraylist集合用于存储编号。 3:创建花色数组和点数数组。 4:从0开始往HashMap集合里面存储编号,并存储对应的牌。同时往ArrayList集合里面存储编号。 5 :洗牌(洗的是编号),用collections的shuffle()方法实现。 6:发牌(发的也是编号,为了保证编号是排序的,创建TreeSet集合接收 7:定义方法看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌) 8:调用方法看牌 */ public class ChinesePoker { public static void main(String[] args) { //创建HashMap集合 key是编号用Integer value是牌用String HashMap hm=new HashMap<>(); //创建ArrayList集合用来存储编号 ArrayList list=new ArrayList<>(); //创建花色数组和点数数组 String [] color={"♠", "♦", "♥","♣"}; String [] number={"3","4","5","6","7","8","9","10","J","Q","K","A","2"}; //从0开始往HashMap集合里面存储编号,并存储对应的牌。同时往ArrayList集合里面存储编号 int index=0; //增强For循环存储花色和点数 for(String num:number){ for(String col:color){ hm.put(index,col+num); list.add(index); index++; } } //52张牌存完了 还剩大小王 现在添加进去 hm.put(index,"小王"); list.add(index); index++; hm.put(index,"大王"); list.add(index); //洗牌(洗的是编号),用collections的shuffle()方法实现。 Collections.shuffle(list); //发牌 用TreeSet接收 用三位玩家名字命名 TreeSet PDD=new TreeSet<>(); TreeSet DaSiMa=new TreeSet<>(); TreeSet LuBenWei=new TreeSet<>(); //三张底牌 TreeSet finalCard=new TreeSet<>(); for(int x=0;x=list.size()-3){ finalCard.add(a); }else if(x%3 == 0){ PDD.add(a); }else if(x%3 == 1){ DaSiMa.add(a); }else { LuBenWei.add(a); } } //调用看牌方法 lookPoker("PDD",PDD,hm); lookPoker("大司马",DaSiMa,hm); lookPoker("卢本伟",LuBenWei,hm); lookPoker("底牌",finalCard,hm); } //定义看牌的方法(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌) public static void lookPoker(String name,TreeSet ts,HashMap hm ){ System.out.print(name+"的手牌为:"); //遍历牌 就是遍历索引 for(Integer key:ts){ String poker = hm.get(key); System.out.print(poker+" "); } System.out.println(); } }
感谢各位的阅读,以上就是"如何用Java写一个斗地主"的内容了,经过本文的学习后,相信大家对如何用Java写一个斗地主这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
存储
方法
数组
斗地主
点数
花色
同时
就是
底牌
思路
学习
排序
内容
名字
大小
大王
完了
扑克
扑克牌
玩家
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网页如何做数据库
门窗设计软件开发
国防科技大学网络安全博士
数据库中的主格是什么意思
芜湖网络安全教育局
汉中浪潮招聘软件开发吗
无服务器数据库技术标准
nas网络服务器linux
普公英网络技术有限公司
网易我的世界进服务器更新显卡
湖南通用软件开发资费
网络安全研究创新点子
全球软件开发中的scrum
淮安云服务器咨询客服
成都市齐耀网络技术服务
oracle数据库多少钱一套
江门服务器钣金机箱定做
首席网络安全运维
流行的数据库有哪些
中国互联网科技产品
浙江超级服务器
蓝讯网络技术导师张金铭
数据库已更新或者删除的行值
国家电网二型网络安全监控
软件开发有业务部吗
众湖互联网科技公司怎么样
ccat网络安全高级操作员
数据库的设计实例
数据库中没有nchar数据类型
湖北通讯软件开发设施价钱