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

news/2024/12/2 22:32:24/

按照斗地主的规则,完成洗牌发牌的动作。
具体规则:

  • 使用54张牌;

  • 打乱顺序;

  • 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌;

  • 手中的牌按从小到大的顺序排列

    import java.util.ArrayList;import java.util.Collections;import java.util.LinkedHashMap;import java.util.Map;public class Doudizhu {public static void main(String[] args){//1.创建编号和牌对应的map集合,编号越大牌越大Map<Integer,String> map = new LinkedHashMap<Integer,String>();//2.创建牌的编号对应的ArrayList集合ArrayList<Integer> arraylist = new ArrayList<Integer>();//3.向Map,ArrayList中添加数据//编号int id = 1;//花色和数值String[] colors={"♠️","♥️","♣️","♦️"};String[] numbers={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};//生成牌for (String num:numbers) {for (String color:colors) {String card = color+num;map.put(id,card);arraylist.add(id);id++;}}map.put(id,"小王");arraylist.add(id);id++;map.put(id,"大王");arraylist.add(id);//4.洗牌Collections.shuffle(arraylist);//5.发牌ArrayList<Integer> person1Id = new ArrayList<Integer>();ArrayList<Integer> person2Id = new ArrayList<Integer>();ArrayList<Integer> person3Id = new ArrayList<Integer>();ArrayList<String> remaining = new ArrayList<String>();//给三个玩家轮流发牌for (int i=0;i<arraylist.size()-3;i++){person1Id.add(arraylist.get(i));i++;person2Id.add(arraylist.get(i));i++;person3Id.add(arraylist.get(i));}//剩下的三张底牌for (int j=arraylist.size()-3;j<arraylist.size();j++){//获取牌的编号int remainningId = arraylist.get(j);//根据牌的编号找到牌String remainingCard = map.get(remainningId);//将牌添加到ArrayList中remaining.add(remainingCard);}System.out.println("底牌:"+remaining);//6.给三个玩家手里的牌排序Collections.sort(person1Id);Collections.sort(person2Id);Collections.sort(person3Id);ArrayList<String> person1Card = new ArrayList<String>();ArrayList<String> person2Card = new ArrayList<String>();ArrayList<String> person3Card = new ArrayList<String>();//7.看牌//根据牌的编号从Map集合中获取他的牌for (int i:person1Id) {String value = map.get(i);person1Card.add(value);}for (int i:person2Id) {String value = map.get(i);person2Card.add(value);}for (int i:person3Id) {String value = map.get(i);person3Card.add(value);}System.out.println(person1Card);System.out.println(person2Card);System.out.println(person3Card);}
    }
    

结果为:在这里插入图片描述


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

相关文章

斗地主不算花色算大小王,起初发到的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…

I2C与I3C

Improved Inter Integrated Circuit &#xff0c;是 MIPI&#xff08;Mobile Industry Processor Interface&#xff09;移动产业处理器接口联盟推出的改进型 i2c (Inter-Integrated Circuit Bus)总线接口。 I3C Introduction I3C &#xff1a;Improved Inter Integrated Cir…

Web实验三 CSS基本网页布局实验

实验原理 通过定义css样式&#xff0c;理解css属性以及页面真整体结构布局的方法及设计思想。 实验目的 理解并掌握多种css选择器的使用方法 理解并掌握后代选择器的作用及使用设计方法 理解并掌握伪类的作用、意义及使用方法 理解并掌握基于div容器页面布局的方法 理解并掌握…

11-执行上下文和执行栈

一、执行上下文 &#x1f35f;&#x1f35f;&#x1f35f;是一种对js代码执行环境的抽象概念 只要有js代码运行&#xff0c;一定是运行在执行上下文中 执行上下文的类型分为三种&#xff1a; 全局执行上下文&#xff1a;只有一个&#xff0c;浏览器中的全局对象就是 window对…