• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

使用JavaSE来模拟斗地主

java 搞代码 4年前 (2022-01-05) 23次浏览 已收录 0个评论
文章目录[隐藏]

这篇文章主要介绍了使用JavaSE来模拟斗地主,对棋牌游戏有研究的同学可以参考一下

通过模拟斗地主案例来练习集合的使用

结果预览:

每次发牌后,三位玩家的手牌是随机的并且已经按照手牌大小排完序,运行两次验证手牌的随机性。

马老师的牌还不错,芜湖~起飞

思路:

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(); } } 

以上就是使用Jav来源[email protected]搞@^&代*@码网aSE来模拟斗地主的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:使用JavaSE来模拟斗地主
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址