文章目录
- 一、需求
- 二、分析
- 三、实现步骤
- 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()方法,可以进行排序。