定义一个Pocker类,用于定义牌类
package demo;
public class Poker {
private String suit;//花色
private int rank;//数字
//构造函数
public Poker(String suit, int rank) {
this.suit = suit;
this.rank = rank;
}
//get 和 set 方法
public String getSuit() {
return suit;
}
public void setSuit(String suit) {
this.suit = suit;
}
public int getRank() {
return rank;
}
public void setRank(int rank) {
this.rank = rank;
}
public String toString() {
return "{" + suit + " " + rank + "}";
}
}
定义一个Game类
package demo;
import java.util.ArrayList;
import java.util.Random;
public class Game {
//定义四种好花色
private static final String[] suits = {"♥", "♣", "♦", "♥"};
//生成52张扑克牌
public ArrayList<Poker> productPoker() {
ArrayList<Poker> pokers = new ArrayList<>();
for (int i = 0; i < suits.length; i++) {
for (int j = 0; j < 13; j++) {
int rank = j;
String suit = suits[i];
Poker poker = new Poker(suit, rank);
pokers.add(poker);
}
}
return pokers;
}
//洗牌
private void swap(ArrayList<Poker> pokers, int i, int j) {//交换函数
Poker tmp = pokers.get(i);
pokers.set(i, pokers.get(j));
pokers.set(j, tmp);
}
public ArrayList<Poker> shufflePocker(ArrayList<Poker> pokers) {
for (int i = pokers.size() - 1; i > 0; i--) {
Random random = new Random();
int index = random.nextInt(i);//产生一个0到i的随机数
swap(pokers, index, i);//交换牌index 与 i指向的内容
}
return pokers;
}
//码牌
public ArrayList<ArrayList<Poker>> buildPoker(ArrayList<Poker> pokers) {
ArrayList<ArrayList<Poker>> hands = new ArrayList<>();
ArrayList<Poker> person1 = new ArrayList<>();
ArrayList<Poker> person2 = new ArrayList<>();
ArrayList<Poker> person3 = new ArrayList<>();
for (int i = 0; i < pokers.size(); i++) {
int j = i % 3;
switch (j) {
case 0: {
person1.add(pokers.get(i));
break;
}
case 1: {
person2.add(pokers.get(i));
break;
}
case 2: {
person3.add(pokers.get(i));
break;
}
}
}
hands.add(person1);
hands.add(person2);
hands.add(person3);
return hands;
}
}
定义一个测试类
package demo;
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
Game game = new Game();
ArrayList<Poker> pokers = new ArrayList<>();
ArrayList<ArrayList <Poker>> hands = new ArrayList<>();
//生成牌
pokers = game.productPoker();
//打印牌
System.out.println(pokers);
//洗牌
pokers = game.shufflePocker(pokers);
System.out.println(pokers);
//码牌
hands = game.buildPoker( pokers);
for (int i = 0; i < hands.size(); i++) {
System.out.println("person"+ (i+1) +"的牌:");
for (int j = 0; j < hands.get(i).size(); j++) {
System.out.print(hands.get(i).get(j));
}
System.out.println();
}
}
}
结果