斗地主游戏案例开发

news/2025/1/1 17:48:26/
*  业务需求
*      斗地主的做牌,发牌,排序,看牌
*      业务,54张牌
*      点数:"3","4","5","6","7","8","9","10","J","Q","K","A","2"
*      花色:"♠","♥","♣","♦"
*      大小王:"👲"(大王),"👨‍🌾"(小王)
*      点数风暴要组合4种花色,大小王各一张
*      斗地主:发51张牌,剩下3张做底牌
*  功能:
*      1,做牌
*      2,洗牌
*      3,定义3个玩家
*      4,发牌
*      5,排序
*      6,看牌
*  面向对象设计案例
*      a,定义一个牌类,代表牌对象
*      b,定义一个集合存储54张牌,集合只需要1个
public class DemoGame {/*a,顶一个静态集合,代表牌对象,存储54张牌,集合只需要一个*/public static final List<Card> ALL_CARDS = new ArrayList<>();/*b,做牌*/static{//1,定义一个数组存储牌的点数,类型确定,个数确定请用数组存储String[] numbers = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};//2,定义一个数组存储牌的花色,类型确定,个数确定存入到集合中去String[] colors = {"♠","♥","♣","♦"};//3,先遍历点数与4种花色组中成牌对象存入到集合中去int index = 0;for (String number : numbers) {//遍历花色for (String color : colors) {Card card = new Card(number,color,index++);ALL_CARDS.add(card);}}//4,单独加入大小王Collections.addAll(ALL_CARDS, new Card("","👲",index++),new Card("","👨‍🌾",index++));System.out.println("输出新牌 :"+ALL_CARDS);}public static void main(String[] args) {/*c,洗牌*/Collections.shuffle(ALL_CARDS);System.out.println("洗牌后 :"+ALL_CARDS);/*d,定义3个玩家*/ArrayList<Card> ZhangSan = new ArrayList<>();ArrayList<Card> LiSi = new ArrayList<>();ArrayList<Card> WangWu = new ArrayList<>();/*e,发牌*/for (int i = 0; i < ALL_CARDS.size() - 3; i++) {//得到当前这张牌对象Card c = ALL_CARDS.get(i);//判断这个牌发给谁if (i % 3 == 0){ZhangSan.add(c);}else if (i % 3 == 1){LiSi.add(c);}else if (i % 3 == 2){WangWu.add(c);}}/*f,对牌进行排序*/sortCard(ZhangSan);sortCard(LiSi);sortCard(WangWu);/*g,看牌*/System.out.println("张三 :"+ZhangSan);System.out.println("李四 :"+LiSi);System.out.println("王五 :"+WangWu);//截取最后三张牌做底牌List<Card> lastThreeCards = ALL_CARDS.subList(ALL_CARDS.size() - 3, ALL_CARDS.size());System.out.println("底牌 :"+lastThreeCards);}/*对牌的List集合进行排序*/private static void sortCard(List<Card> cards) {Collections.sort(cards, new Comparator<Card>() {@Overridepublic int compare(Card o1, Card o2) {return o2.getIndex()- o1.getIndex();}});}}
public class Card{private String number;private String color;private int index;//存储牌在新牌中的索引public Card() {}public Card(String number, String color, int index) {this.number = number;this.color = color;this.index = index;}public Card(String number, String color) {this.number = number;this.color = color;}public int getIndex() {return index;}public void setIndex(int index) {this.index = index;}public String getNumber() {return number;}public void setNumber(String number) {this.number = number;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}@Overridepublic String toString() {return number+color;}
}


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

相关文章

使用集合来完成一场斗地主

引言&#xff1a; 学习java这么久了&#xff0c;总归是要拿出一点有趣的东西哈&#xff0c;今天就给大家带来一个学集合当中有趣的一个&#xff0c;且知识点设计比较综合的一个例子&#xff0c;斗地主&#xff0c;当然基于目前的水平我们只解决一个发牌&#xff0c;看牌的简单操…

Java-斗地主小例子

//创建一个String类型的泛型集合ArrayList<String> poker new ArrayList<>();//定义两个数组&#xff0c;一个数组存牌的类型&#xff0c;一个存牌的序号String[] colors {"♥","♠","♦","♣"};String[] numbers {&qu…

关于斗地主类似案例

package com.guigu.test.homework19.listandset;import java.util.ArrayList; import java.util.Collections; import java.util.Comparator;/*1、用一个String[]数组存点数​ 2、用一个String[]数组存花色​ 3、用一个String[]数组存大王、小王​ 4、用上面的数组&#xff…

如何简单编写斗地主发牌程序

我们先来看一看要求 * 纸牌管理类 * 斗地主游戏规则如下: * 1.有三名玩家&#xff0c;可从控制台赋值玩家姓名&#xff0c;玩家中会有牌类集合的属性&#xff0c;还有是否是地主的状态 * 2.牌类有两个属性:花色和点数。花色有4种:黑红梅方&#xff08;可用枚举&#xff09;点数…

【Android】使用对象池(Object Pool)来缓存已经创建的字节数组,避免频繁地进行内存分配和回收操作提高性能

在Android中,使用new byte[]创建字节数组是在堆上分配内存,不会直接导致Native内存的增长。但是,如果我们频繁地创建和销毁字节数组,就可能会导致堆内存不足,并触发GC,从而影响应用程序的性能。 在Android中,堆内存的大小是有限制的。如果我们频繁地创建和销毁字节数组…

Leetcode | 40 组合总和II

40 组合总和II 文章目录 40 组合总和II题目官方解法&#xff1a;回溯思路与算法 codeReference 题目 给定一个候选人编号的集合 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能…

「SQL面试题库」 No_97 院系无效的学生

&#x1f345; 1、专栏介绍 「SQL面试题库」是由 不是西红柿 发起&#xff0c;全员免费参与的SQL学习活动。我每天发布1道SQL面试真题&#xff0c;从简单到困难&#xff0c;涵盖所有SQL知识点&#xff0c;我敢保证只要做完这100道题&#xff0c;不仅能轻松搞定面试&#xff0…

AMD StoreMI一次让脸变绿的经历

本人是去年配的 华硕X470 PROAMD 2700X&#xff0c;之前知道intel和amd storemi的介绍但是没使用过&#xff0c;前几天想折腾一下&#xff0c;就百度了一下AMD StoreMI第一个跳出来的就是官方下载通道&#xff0c;下载安装高兴的安装完毕后&#xff0c;打开应用 查网上AMD Stor…