扑克纸牌游戏
通过代码实现扑克纸牌的简单游戏,能够实现以下简单内容。
- 创建一副扑克牌,用buyPoker方法实现。
- 洗牌功能,用shuffle实现
- 发牌, 假设有三个玩家, 每个玩家, 给发 5 张牌,每个玩家手里有 5 张牌, 这 5 张牌就使用另外一个 ArrayList 表示,此时可以把这三个玩家也放到一个 List 中。
- 展示手牌
import java.util.*;
//创建一个Card类,包含属性花色(suit)、大小值(rank)
class Card{
public String suit;
public String rank;
public Card(String suit,String rank) {
this.suit = suit;
this.rank = rank;
}
@Override
public String toString() {
return "(" + this.rank + ")";
}
}
public class PokerGame {
//提请市创建数组,把所需的四种花色准备好。
public static final String[] suits = {"♥", "♠", "♣", "♦"};
//用buyPoker方法创建一副Poker牌
public static List<Card> buyPoker() {
ArrayList<Card> poker = new ArrayList<>();
for (int i = 0; i < 4; i++) {
for (int j = 2; j <= 10; j++) {
poker.add(new Card(suits[i], "" + j));
}
poker.add(new Card(suits[i], "j"));
poker.add(new Card(suits[i], "Q"));
poker.add(new Card(suits[i], "K"));
poker.add(new Card(suits[i], "A"));
}
poker.add(new Card("", "Big Joker"));
poker.add(new Card("", "Samll Joker"));
return poker;
}
//洗牌功能
private static void shuffle(List<Card> poker) {
//产生[0,i)的随机数,与纸牌交换
Random random = new Random();
for (int i = poker.size() - 1; i > 0; i--) {
int pos = random.nextInt(i);
swap(poker, i, pos);
}
}
public static void swap(List<Card> poker, int i, int j) {
Card tmp = poker.get(i);
poker.set(i, poker.get(j));
poker.set(j, tmp);
}
public static void main(String[] args) {
List<Card> poker = buyPoker();//首先创建一副牌
Collections.shuffle(poker);
System.out.println(poker);
发牌, 假设有三个玩家, 每个玩家, 给发 5 张牌
// 每个玩家手里有 5 张牌, 这 5 张牌就使用另外一个 ArrayList 表示.
// 此时可以把这三个玩家也放到一个 List 中.
// players 类型仍然是 List, 泛型参数, 是一个 List<Card> , 每个元素就是一个 List<Card>
List<List<Card>> players = new ArrayList<>();
// 每次 add 的元素都是一个 ArrayList<Card> 类型
players.add(new ArrayList<>());
players.add(new ArrayList<>());
players.add(new ArrayList<>());
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 3; j++) {
Card top = poker.remove(0);
List<Card> player = players.get(j);
player.add(top);
}
}
//展示玩家手中的手牌
for (int i = 0; i < players.size(); i++) {
List<Card> player = players.get(i);
System.out.println("玩家" + i + "的手牌" + player);
}
}
}