这个小项目是:给三名玩家轮流分发 5 张扑克牌,并且扑克牌可以重洗。
首先我们要现有一副新的扑克牌,然后我们对这副牌进行洗牌操作。下来给三名玩家轮流分发。
首先扑克牌具有的属性:
- 花色
- 大小
我们先创建一个 Card 类:
class Card {
public String suit;//花色
public String rank;//大小
@Override
public String toString() {
return "[" + suit + " " + rank + "]";
}
}
由于扑克牌的大小中有"A, J, Q, K",不能全部用 int 来表示,所以我们用 String 来表示.
下面需要我们来买一副新的扑克牌,我们用一个 ArrayList 来创建一副新的扑克牌:
public static String[] SUITS = {"♥️", "♦️", "♣️", "♠️"};
public static String[] RANKS = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10",
"J", "Q", "K"};
public static List<Card> buyCard() {
List<Card> list = new ArrayList<>();
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 13; j++) {
String suit = SUITS[i];
String rank = RANKS[j];
Card card = new Card();
card.suit = suit;
card.rank = rank;
list.add(card);
}
}
return list
}
洗牌我们用 Collections 类中的 shuffle方法进行洗牌。
Collections.shuffle(list);
接下来就是分发牌了:
// List<List<Card>> 首先 List<Card> 这个是一个扑克牌的数组,
//然后 List<List<Card>> 这个相当于是一个 '二维数组',
//这个数组里面的每个元素又是一个 List<Card>,
//这样就模拟出了 3 个 List<Card> 扑克牌数组,相当于三个玩家
List<List<Card>> player = new ArrayList<>();
player.add(new ArrayList<>());
player.add(new ArrayList<>());
player.add(new ArrayList<>());
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 3; j++) {
player.get(j).add(list.remove(0));
}
}
这个项目完整的代码:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
class Card {
public String suit;
public String rank;
@Override
public String toString() {
return "[" + suit + " " + rank + "]";
}
}
public class CardDemo {
public static String[] SUITS = {"♥️", "♦️", "♣️", "♠️"};
public static String[] RANKS = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10",
"J", "Q", "K"};
public static List<Card> buyCard() {
List<Card> list = new ArrayList<>();
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 13; j++) {
String suit = SUITS[i];
String rank = RANKS[j];
Card card = new Card();
card.suit = suit;
card.rank = rank;
list.add(card);
}
}
return list;
}
public static void main(String[] args) {
List<Card> list = buyCard();
System.out.println("刚买回来的牌:");
System.out.println(list);
Collections.shuffle(list);
System.out.println("洗过之后的牌:");
System.out.println(list);
//三人轮流抽牌,每人一共抽5张
List<List<Card>> player = new ArrayList<>();
player.add(new ArrayList<>());
player.add(new ArrayList<>());
player.add(new ArrayList<>());
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 3; j++) {
player.get(j).add(list.remove(0));
}
}
System.out.println("玩家1的手牌:");
System.out.println(player.get(0));
System.out.println("玩家2的手牌:");
System.out.println(player.get(1));
System.out.println("玩家3的手牌:");
System.out.println(player.get(2));
System.out.println("剩余的牌:");
System.out.println(list);
}
}
效果展示: