斗地主三步走——洗牌、发牌和看牌

简介: 斗地主三步走——洗牌、发牌和看牌

斗地主三步走——洗牌、发牌和看牌

相信大家都玩过牌游斗地主吧,今天呢,阿Q就带大家写一个简单的斗地主的洗牌、发牌和看牌的小Demo。

public static void main(String[] args) {
   //1,买一副扑克,其实就是自己创建一个集合对象,将扑克牌存储进去
   String[] num = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
   String[] color = {"红桃","黑桃","方片","梅花"};
   HashMap<Integer, String> hm = new HashMap<>();//存储索引和扑克牌
   ArrayList<Integer> list = new ArrayList<>();//存储索引
   int index = 0;
   //拼接扑克牌并索引和扑克牌存储在hm中
   for(String s1 : num) {//获取数字
       for(String s2 : color) {//获取颜色
           hm.put(index, s2.concat(s1));
           list.add(index);//将索引0到51添加到list集合中
           index++;
      }
  }
   //将小王添加到双列集合中
   hm.put(index, "小王");
   list.add(index);//将52索引添加到集合中
   index++;
   hm.put(index, "大王");
   list.add(index);//将53索引添加到集合中
   //2,洗牌
   Collections.shuffle(list);
   //3,发牌
   TreeSet<Integer> gaojin = new TreeSet<>();
   TreeSet<Integer> longwu = new TreeSet<>();
   TreeSet<Integer> me = new TreeSet<>();
   TreeSet<Integer> dipai = new TreeSet<>();
   for(int i = 0; i < list.size(); i++) {
       if(i >= list.size() - 3) {
           dipai.add(list.get(i));//将三张底牌存储在底牌集合中
      }else if(i % 3 == 0) {
           gaojin.add(list.get(i));
      }else if(i % 3 == 1) {
           longwu.add(list.get(i));
      }else {
           me.add(list.get(i));
      }
  }
   //看牌
   lookPoker(hm, gaojin, "高进");
   lookPoker(hm, longwu, "龙五");
   lookPoker(hm, me, "冯佳");
   lookPoker(hm, dipai, "底牌");
}
/*
     - 看牌
     - 1,返回值类型void
     - 2,参数列表HashMap,TreeSet,String name
   */
public static void lookPoker(HashMap<Integer, String> hm,TreeSet<Integer> ts ,String name) {
   System.out.print(name + "的牌是:");
   for(Integer i : ts) {//i代表双列集合中的每一个键
       System.out.print(hm.get(i) + " ");
  }
   System.out.println();
}
相关文章
|
存储 测试技术 C#
C#之四十五 扑克牌Memorize
C#之四十五 扑克牌Memorize
86 0
|
9月前
|
存储 算法 PHP
开发一款扑克游戏,请给出一套洗牌算法,公平的洗牌并将洗好的牌存储在一个整形数组里?
开发一款扑克游戏,请给出一套洗牌算法,公平的洗牌并将洗好的牌存储在一个整形数组里?
52 1
开发一款扑克游戏,请给出一套洗牌算法,公平的洗牌并将洗好的牌存储在一个整形数组里?
|
算法 Go
算法练习第五天——有效数独
请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)
算法练习第五天——有效数独
用Java实现简易的洗牌和发牌功能
在日常生活中,想必大家都玩过或者听过斗地主吧,斗地主大致分为三个过程:洗牌,发牌,玩家按照规则将手中的牌给打完,谁最先打完,谁就获胜。这听起来挺简单的,但是影响你胜利的因素有很多:洗牌,玩家的水平。在赌场中很多人就是在洗牌跟发牌的过程中作弊的,那么我们可不可以用代码来实现洗牌跟发牌的功能来实现相对公平呢?
简单设计一下洗牌和发牌
简单设计一下洗牌和发牌
122 0
简单设计一下洗牌和发牌
|
机器学习/深度学习 算法
<<算法很美>>——(六)——回溯算法(下)—N皇后问题
<<算法很美>>——(六)——回溯算法(下)—N皇后问题
<<算法很美>>——(六)——回溯算法(下)—N皇后问题
|
存储 小程序 Java
Java数据结构之基于ArrayList编写大众麻将和扑克牌洗牌小练习
本文讲解:Java数据结构之基于ArrayList编写大众麻将和扑克牌洗牌小练习
|
算法 JavaScript
【青训营】- 如何给扑克洗牌才能更公平?
平常在日常生活中,我们总会遇到公平性这个话题。比如,几个人分奖品,怎么样才能公平分配?又或者,年会来个抽奖转盘,怎么样才能让它更公平呢? 那在下面这篇文章呢,我们将谈论关于洗牌的公平性。一起来了解吧~
【青训营】- 如何给扑克洗牌才能更公平?
|
算法
《C游记》 番外篇(壹)二分查找显神威 猜数游戏趣味生
《C游记》 番外篇(壹)二分查找显神威 猜数游戏趣味生
148 0