Collection 斗地主游戏

news/2024/12/2 21:31:31/
package day8_doudizhu;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;//1.做牌
//2.洗牌
//3.定义三个玩家
//4.发牌
//5.排序
//6.看牌
public class GameDemo {//1.定义一个静态的集合存储54张牌public static List<Card> allCards = new ArrayList<>();//2.做牌,定义静态代码块初始化牌数据static {//3.定义点数:个数确定,类型确定,使用数组String[] sizes = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};//4.定义花色:个数确定,类型确定,用数组String[] colors = {"♣", "♥", "♦", "♠"};//5.组合点数和花色int index = 0;//记录牌的大小for (String size : sizes) {index++;for (String color : colors) {//6.封装成一个牌对象Card c = new Card(size, color,index);//7.存入到集合容器中去allCards.add(c);}}//8.大小王存入到集合容器中去Card c1 = new Card("", "🃏",++index);Card c2 = new Card("", "🃏",++index+1);Collections.addAll(allCards, c1, c2);System.out.println("新牌" + allCards);}public static void main(String[] args) {//9.洗牌Collections.shuffle(allCards);System.out.println("洗牌后:" + allCards);//10发牌,定义三个玩家,每个玩家的牌也是一个集合容器List<Card> linhuchong = new ArrayList<>();List<Card> jiumozhi = new ArrayList<>();List<Card> renyingying = new ArrayList<>();//allCards=[♠J, ♣10, ♥7, ♠10, ♠K, 🃏, ♣5, ♥K, ♥A, ♦9, ♠3, ♣3, ♠Q//    i      0    1   2                                      %    3//11.开始发牌(发 51张,剩余三张做底牌)for (int i = 0; i < allCards.size() - 3; i++) {Card c = allCards.get(i);if (i % 3 == 0) {linhuchong.add(c);} else if (i % 3 == 1) {jiumozhi.add(c);} else if (i % 3 == 2) {renyingying.add(c);}}//12.拿到三张底牌(把最后三张截取成一个子集)List<Card> lastThreeCards = allCards.subList(allCards.size()-3,allCards.size());//13.给玩家的牌排序(从大到小)sortCards(linhuchong);sortCards(jiumozhi);sortCards(renyingying);//14.输出玩家的牌System.out.println("阿冲:"+linhuchong);System.out.println("阿纠:"+jiumozhi);System.out.println("盈盈:"+renyingying);System.out.println("底牌:"+lastThreeCards);}private static void sortCards(List<Card> cards) {Collections.sort(cards, new Comparator<Card>() {@Overridepublic int compare(Card o1, Card o2) {return o2.getIndex()- o1.getIndex();}});}
}

 

package day8_doudizhu;public class Card {private String size;private String color;private int index;//牌的大小public Card() {}public Card(String size, String color,int index) {this.size = size;this.color = color;this.index = index;}public String getSize() {return size;}public void setSize(String size) {this.size = size;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public int getIndex() {return index;}public void setIndex(int index) {this.index = index;}@Overridepublic String toString() {return color+size;}
}

 


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

相关文章

斗地主之简单代码实现

思路&#xff1a; 1.先要实现洗牌&#xff1b; 2.然后去实现给每一个玩家发牌&#xff1b; 3.最后&#xff0c;再到每一个玩家看牌。 代码如下&#xff1a; import java.util.*;public class Poker {public static void main(String[] args) {HashMap<Integer, String&…

模拟斗地主游戏发牌

文章目录 一、需求二、分析三、实现步骤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;包括…