斗地主之简单代码实现

news/2024/12/2 22:37:55/

思路:

1.先要实现洗牌;

2.然后去实现给每一个玩家发牌;

3.最后,再到每一个玩家看牌。

代码如下:

import java.util.*;public class Poker {public static void main(String[] args) {HashMap<Integer, String> hm = new HashMap<Integer, String>();ArrayList<Integer> array = new ArrayList<Integer>();
//        字符串数组来装牌的花色String[] color = {"♦","♣","♥","♠"};
//        字符串数组来装牌的大小String[] num = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};int index = 0;
//        一定是外层循环是牌的大小,内层循环是花色for (String num1 : num) {for (String color1 : color) {hm.put(index,color1+num1);array.add(index);index++;}}hm.put(index,"小王");array.add(index);index++;hm.put(index,"大王");array.add(index);
//        实现洗牌Collections.shuffle(array);
//        用TreeSet来实现对牌的排序TreeSet<Integer> player1 = new TreeSet<Integer>();TreeSet<Integer> player2 = new TreeSet<Integer>();TreeSet<Integer> player3 = new TreeSet<Integer>();TreeSet<Integer> dp = new TreeSet<Integer>();for (int i = 0; i < array.size() ; i++) {int s = array.get(i);
//            最后三张就是底牌if (i >= array.size()-3) {dp.add(s);}else if (i % 3 == 0) {player1.add(s);}else if (i % 3 == 1) {player2.add(s);}else if (i % 3 == 2) {player3.add(s);}}lookPoker("张三",player1,hm);lookPoker("李四",player2,hm);lookPoker("王二麻子",player3,hm);lookPoker("底牌",dp,hm);}public static void lookPoker(String name,TreeSet<Integer> t,HashMap<Integer,String> hm) {System.out.println(name+"的牌是:");for (Integer key : t) {String poker = hm.get(key);System.out.print(poker + " ");}System.out.println();}
}

运行结果如下:

总结:

      定义一个HashMap和ArrayList,HashMap用来装牌的索引和牌,ArrayList装牌的索引,运用数组将索引与牌的大小相结合;再用Collections中的方法来实现洗牌,用TreeSet集合来接收三个玩家的牌和底牌,实现发牌,最后定义看牌的方法,再调用,这样就实现斗地主的简单版了。

  


http://www.ppmy.cn/news/387946.html

相关文章

模拟斗地主游戏发牌

文章目录 一、需求二、分析三、实现步骤1、创建Card类2、创建GameDemo类3、测试代码 总结 一、需求 在启动游戏房间的时候&#xff0c;应该提前准备好54张牌&#xff0c;完成洗牌、发牌、牌排序、逻辑。 二、分析 1、当系统启动的同时需要准备好数据的时候&#xff0c;就可以…

扑克牌游戏(斗地主)

扑克牌游戏&#xff08;斗地主&#xff09; 文章目录 扑克牌游戏&#xff08;斗地主&#xff09; 题目公共类Commons扑克牌类Puke操作类Operation玩牌者Player测试类运行截图 题目 题目&#xff1a;创建一幅扑克牌&#xff08;含有大小王&#xff09;&#xff0c;里面实现洗牌…

斗地主练习(按照斗地主的规则,完成洗牌发牌的动作。)

按照斗地主的规则&#xff0c;完成洗牌发牌的动作。 具体规则&#xff1a; 使用54张牌&#xff1b; 打乱顺序&#xff1b; 三个玩家参与游戏&#xff0c;三人交替摸牌&#xff0c;每人17张牌&#xff0c;最后三张留作底牌&#xff1b; 手中的牌按从小到大的顺序排列 import …

斗地主不算花色算大小王,起初发到的17张牌有多少种?

2015-02 初写 用动态规划算法来求&#xff0c;设 d p [ j ] dp[j] dp[j]表示选了 j j j张牌的种类数 起初 d p [ j ] 0 ( j > 0 ) &#xff0c; d p [ 0 ] 1 dp[j]0(j>0)&#xff0c;dp[0]1 dp[j]0(j>0)&#xff0c;dp[0]1 第一层枚举牌的种类 A − K A-K A−K&a…

实现斗地主发牌

斗地主 1、完成一个控制台程序 知识点&#xff1a; srand(time(NULL))&#xff1a;这是两个函数&#xff0c;一个是srand函数&#xff0c;这是在调用rand&#xff08;&#xff09;这个函数之前使用的&#xff0c;rand&#xff08;&#xff09;是一个产生随机数的函数&#x…

斗地主(^-^)发牌程序

有很多朋友斗想编一个自己的小游戏&#xff0c;今天我为大家带来的是&#xff0c;如何用java封装对象写斗地主的发牌程序。 首先我们知道一副牌一共有54张&#xff0c;其中大小王是特殊的没有4个花色&#xff0c;其余牌都是有是个花色的。 所以我们根据面向对象的思想&#x…

Qgis2threejs

three.js是JavaScript编写的一个开源的3D图形库&#xff0c;它可以用于创建各种各样的交互式3D应用程序和动画。该库提供了一系列的工具和功能&#xff0c;使得在Web浏览器中创建高质量的3D图形变得更加容易。 使用three.js&#xff0c;您可以轻松地创建3D场景&#xff0c;包括…

awk, sed, grep学习笔记

grep -v ^$ xx.txt 排除空行 egrep 或者 grep -E 是一个意思&#xff0c;都表示拓展正则 egrep -o [abc] xx.txt 其中-o表示只打印匹配到的内容 egrep -w abc xx.txt 单词模式&#xff0c;只匹配拥有完整单词的行 egrep -n abc xx.txt 匹配含有abc的行&#xff0c;-n…