1.创建一个牌类
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;
}
@Override
public String toString() {
// return "Card{" +
// "size='" + size + '\'' +
// ", color='" + color + '\'' +
// '}';
return size + color;
}
}
2.创建一个斗地主测试类
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class GamaDemo {
/**
* 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 = {"♠","♥","♣","♦"};
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);
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> a =new ArrayList();
List<Card> b =new ArrayList();
List<Card> d =new ArrayList();
//11.开始发牌(51+3)
for (int i = 0; i < allCards.size()-3; i++) {
//先拿到牌对象
Card c = allCards.get(i);
if(i%3==0){
a.add(c);
}else if(i%3==1){
b.add(c);
}else if(i%3 == 2){
d.add(c);
}
}
//12.拿到最后三张牌(截取成一个子集合)
List<Card> lastThree = allCards.subList(allCards.size()-3,allCards.size());
//13.给玩家的牌排序
sortCards(a);
sortCards(b);
sortCards(d);
//14.输出玩家的牌
System.out.println("a:"+a);
System.out.println("b:"+b);
System.out.println("d:"+d);
System.out.println("底牌"+lastThree);
}
/**
* 给牌排序
* @param cards
*/
private static void sortCards(List<Card> cards) {
//
// Collections.sort(cards, new Comparator<Card>() {
// @Override
// public int compare(Card o1, Card o2) {
// return o2.getIndex()-o1.getIndex();
// }
// });
Collections.sort(cards,(o1,o2) -> o2.getIndex()-o1.getIndex()); //简化
}
}