目录
🎴1. 定义扑克牌类
1.1 确定成员变量
其成员变量有:suit花色、rank牌大小
class Card {
public String suit;
public int rank;
}
1.2 添加构造方法
Alt+Insert 或 右击菜单“Generate…”,选择Constructor,选择需要进行构造的成员变量。
class Card {
public String suit;
public int rank;
public Card(String suit, int rank) {
this.suit = suit;
this.rank = rank;
}
}
1.3 重写toString方法
Alt+Insert 或 右击菜单“Generate…”,选择toString(),选择成员变量。
生成后,根据需要进行改写。
class Card {
public String suit;
public int rank;
public Card(String suit, int rank) {
this.suit = suit;
this.rank = rank;
}
@Override
public String toString() {
/* return "Card{" +
"suit='" + suit + '\'' +
", rank=" + rank +
'}';*/
return "["+suit+" "+rank+"]";
}
}
♣♠♦♥2. 生成扑克牌
public class CardDemo {
public static String[] suits = {"♣","♠","♦","♥"};
//生成一副扑克牌
public static List<Card> buyCards() {
List<Card> cards = new ArrayList<>(); //存放52张牌
/* for (int i = 1; i <= 13 ; i++) {
for (int j = 0; j < 4; j++) {
String suit = suits[j];
Card card = new Card(suit, i);
cards.add(card);
}
}*/
for (int i = 0; i < 4; i++) {
String suit = suits[i];
for (int j = 1; j <= 13; j++) {
Card card = new Card(suit, j);
cards.add(card);
}
}
return cards;
}
}
💴3. 洗牌
//交换两位置的牌
public static void swap(List<Card> cardList, int x, int y) {
Card tmp = cardList.get(x);
cardList.set(x, cardList.get(y));
cardList.set(y, tmp);
}
//切牌,洗牌
public static void shuffle(List<Card> cardList) {
int size = cardList.size();
for (int i = size - 1; i > 0 ; i--) {
Random random = new Random();
int ranNum = random.nextInt(i); //[0,i)
swap(cardList,i,ranNum);
}
}
🃏4. 发牌(主函数)
public static void main(String[] args) {
List<Card> cardList = buyCards();
System.out.println(cardList);
System.out.println("洗牌:");
shuffle(cardList);
System.out.println(cardList);
System.out.println("发票:");
//3个人,每个人轮流揭5张牌
List<Card> hand1 = new ArrayList<>();
List<Card> hand2 = new ArrayList<>();
List<Card> hand3 = new ArrayList<>();
List<List<Card>> hands = new ArrayList<>();
hands.add(hand1);
hands.add(hand2);
hands.add(hand3);
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 3; j++) {
//如何确定放到哪个list里面
Card card = cardList.remove(0);
hands.get(j).add(card);
}
}
System.out.println("第一个人的牌:"+hands.get(0));
System.out.println("第二个人的牌:"+hands.get(1));
System.out.println("第三个人的牌:"+hands.get(2));
System.out.println("剩下的牌:"+cardList);
}