模拟斗地主游戏发牌

news/2024/12/2 22:51:20/

文章目录

  • 一、需求
  • 二、分析
  • 三、实现步骤
    • 1、创建Card类
    • 2、创建GameDemo类
    • 3、测试代码
  • 总结


一、需求

在启动游戏房间的时候,应该提前准备好54张牌,完成洗牌、发牌、牌排序、逻辑。

二、分析

1、当系统启动的同时需要准备好数据的时候,就可以用静态代码块了。
2、洗牌就是打乱牌的顺序。
3、定义三个玩家、依次发出51张牌
4、给玩家的牌进行排序(拓展)
5、输出每个玩家的牌数据。

三、实现步骤

1、创建Card类


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 size+color;}
}

2、创建GameDemo类


import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;public class GameDemo {//1、定义一个静态集合存储54张牌对象public static List<Card> allCards=new ArrayList<>();//2、做牌:定义静态代码块初始化数据static {String[] sizes={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};String[] colors={"♠","♥","♦","♣"};int index=0;//记录牌的大小for (String size : sizes) {
index++;for (String color : colors) {//封装成牌对象Card c=new Card(size,color,index);//存放到集合容器中去allCards.add(c);}}//大小王放进去Card c1=new Card("","🃏",++index);Card c2=new Card("","😀",++index);Collections.addAll(allCards,c1,c2);System.out.println("新牌:"+allCards);}public static void main(String[] args) {//洗牌:Collections.shuffle(allCards);System.out.println("洗牌后:"+allCards);//发牌
List<Card> linghuchong=new ArrayList<>();
List<Card> jimozhi=new ArrayList<>();
List<Card> renyingying=new ArrayList<>();for (int i = 0; i < allCards.size()-3; i++) {//先拿到牌对象Card c=allCards.get(i);if(i%3==0){linghuchong.add(c);}else if(i%3==1){jimozhi.add(c);}else if(i%3==2){renyingying.add(c);}}//拿到最后三张底牌,把最后三张牌截取成一个子集和//allCards.get(51);//楼List<Card> lastThreeCards=allCards.subList(allCards.size()-3,allCards.size());//给玩家牌排序(从大到小)sortCards(linghuchong);sortCards(jimozhi);sortCards(renyingying);//输出玩家牌System.out.println("linghuchong:"+linghuchong);System.out.println("jimozhi:"+jimozhi);System.out.println("renyingying:"+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();}});}
}

在这里插入图片描述

3、测试代码


总结

<font color=#999AAA
以上主要是运用ArrayList集合来存储对象,其中,用到了集合里非常重要的 Collections.sort()方法,可以进行排序。


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

相关文章

扑克牌游戏(斗地主)

扑克牌游戏&#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…

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…