public class GameDemo {
public static void main(String[] args) {
Room m=new Room();
m.start();
}
}
public class Card {
private String number;
private String color;
private int size;
public Card() {
}
public Card(String number, String color, int size) {
this.number = number;
this.color = color;
this.size = size;
}
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;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
@Override
public String toString() {
return color+number+"--->"+size;
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Room {
private List<Card>allCards=new ArrayList<>();
public Room(){
// 1、做出54张牌,存入到集合allCards
// a、点数:个数确定了,类型确定。
String[] numbers={"3","4","5","6","7","8","9","10","j","Q","K","A","2"};
// b、花色:个数确定了,类型确定。
String[] colors={"♠", "♥", "♣", "♦"};
int size=0;// 表示每张牌的大小
// c、遍历点数,再遍历花色,组织牌
for (String number : numbers) {
size++;
for (String color : colors) {
// 得到一张牌
Card c=new Card(number,color,size);
allCards.add(c);
}
}
// 单独存入小大王的。
Card c1=new Card("", "🃏" , ++size);
Card c2 = new Card("", "👲" , ++size);
Collections.addAll(allCards,c1,c2);
System.out.println("新牌:"+allCards);
}
public void start() {
// 1、洗牌: allCards
Collections.shuffle(allCards);
System.out.println("洗牌后:"+allCards);
// 2、发牌,首先肯定要定义 三个玩家。 List(ArrayList) Set(TreeSet)
List<Card> linhichong =new ArrayList<>();
List<Card> liumozhi =new ArrayList<>();
List<Card> renyingying =new ArrayList<>();
// 正式发牌给这三个玩家,依次发出51张牌,剩余3张做为底牌。
// allCards = [♥3, ♣10, ♣4, ♥K, ♦Q, ♣2, 🃏, ♣8, ....
// 0 1 2 3 4 5 6 ... % 3
for (int i = 0; i < allCards.size()-3; i++) {
Card c=allCards.get(i);
// 判断牌发给谁
if(i%3==0){
// 请啊冲接牌
linhichong.add(c);
}else if(i%3==1){
// 请啊鸠来接牌
liumozhi.add(c);
}else if(i%3==2){
// 请盈盈接牌
renyingying.add(c);
}
}
// 3、对3个玩家的牌进行排序
sortCards(linhichong);
sortCards(renyingying);
sortCards(liumozhi);
//看牌
System.out.println("啊冲:"+linhichong);
System.out.println("啊鸠:"+liumozhi);
System.out.println("盈盈:"+renyingying);
List<Card> lastThreeCards=allCards.subList(allCards.size()-3,allCards.size());
System.out.println("底牌:"+lastThreeCards);
liumozhi.addAll(lastThreeCards);
sortCards(liumozhi);
System.out.println("啊鸠抢到地主后:"+liumozhi);
}
private void sortCards(List<Card> cards) {
Collections.sort(cards, new Comparator<Card>() {
@Override
public int compare(Card o1, Card o2) {
// return o1.getSize() - o2.getSize(); // 升序排序
return o2.getSize() - o1.getSize(); // 降序排序
}
});
}
}