练习:斗地主游戏
定义卡牌类
package com.zjm.homework;
public class Card {
private String size; //数字
private String color; //花色
private int index; //用来比较卡牌的大小
public Card(String size, String color, int index) {
this.size = size;
this.color = color;
this.index = index;
}
public Card() {
}
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;
}
@Override
public String toString() {
return size+color;
}
}
package com.zjm.homework;
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 {
// 3、 定义点数:个数确定,类型确定,使用数组
String[] sizes = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
// 4、 定义花色:花色确定,类型确定,使用数组
String[] colors = {"♠", "♥", "♣", "◆"};
// 5.组合点数和花色
int index = 1;
for (String size : sizes) {
for (String color : colors) {
// 6.封装成一个牌对象
Card c = new Card(size,color,index++);
// 7.存入到集合容器中去
allCards.add(c);
}
}
// 8.大小王存入到集合对象中去
// allCards.add(new Card("","JOKER",++index));
// allCards.add(new Card("","joker",++index));
Collections.addAll(allCards,new Card("","joker",++index),new Card("","JOKER",++index));
System.out.println("新牌:"+allCards);
}
public static void main(String[] args) {
//9.洗牌
Collections.shuffle(allCards);
System.out.println("洗牌后:"+allCards);
// 10、发牌(定义三个玩家,每个玩家的牌也是一个集合容器)
List<Card> xiaoming = new ArrayList<>();
List<Card> xiaohong = new ArrayList<>();
List<Card> xiaowang = new ArrayList<>();
// 11、 开始发牌(从牌集合中发出51张牌给三个玩家,剩余3张作为底牌)
for (int i = 0; i < allCards.size() -3 ; i++) {
if (i % 3 == 0 ){
xiaoming.add(allCards.get(i));
}else if(i % 3 == 1){
xiaohong.add(allCards.get(i));
}else if(i % 3 == 2){
xiaowang.add(allCards.get(i));
}
}
// 12.拿到最后三张底牌(把最后三张牌藏取成一个子集合)
List<Card> LastThreeCard = allCards.subList(allCards.size()-3, allCards.size() );
// 13. 给玩家的牌排序(从小到大可以自己先试试怎么实现)
sortCard(xiaoming);
sortCard(xiaohong);
sortCard(xiaowang);
// 14. 输出玩家的牌
System.out.println("小明:" + xiaoming);
System.out.println("小红:" + xiaohong);
System.out.println("小王:" + xiaowang);
System.out.println("三张底牌:" + LastThreeCard);
}
private static void sortCard(List<Card> cards){
Collections.sort(cards, new Comparator<Card>() {
@Override
public int compare(Card o1, Card o2) {
return o1.getIndex() - o2.getIndex();
}
});
}
}
浙公网安备 33010602011771号