* 将54张洗乱的牌一次发给三个人,并且留三张底牌,要求每个人的牌都按顺序排序然后控制台显示出每个人手中的牌以及底牌*
package work;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.junit.Test;
public class PokerDemo {
private Person player1 = new Person();
private Person player2 = new Person();
private Person player3 = new Person();
private List<Poker> bottom = new ArrayList<Poker>();
/**
* 斗地主: 1组装54张扑克牌 2将54张牌顺序打乱(查看API手册中的Collections工具类中的shuffle方法)
* 3 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。 4查看三人各自手中的牌(按照牌的大小排序)、底牌
*/
@Test
public void test() {
List<Poker> pokers = getPoker();
System.out.println("--------------------------------");
System.out.println("洗过的牌");
System.out.println(pokers);
System.out.println("--------------------------------");
cutOfDeal(pokers);
}
// 组装一副牌
public List<Poker> getPoker() {
List<Poker> pokers = new ArrayList<Poker>();
String[] colors = { "♦", "♣", "❤", "♠" };
String[] numbers = { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q",
"K", "A", "2" };
for (String c : colors) {
for (String n : numbers) {
pokers.add(new Poker(c, n));
}
}
pokers.add(new Poker("大", "王"));
pokers.add(new Poker("小", "王"));
Collections.shuffle(pokers);
return pokers;
}
public void cutOfDeal(List<Poker> pokers) {
for (int i = 0; i < pokers.size() - 3; i++) {
if (i % 3 == 0) {
Poker poker = pokers.get(i);
player1.getList().add(poker);
}
if (i % 3 == 1) {
Poker poker = pokers.get(i);
player2.getList().add(poker);
}
if (i % 3 == 2) {
Poker poker = pokers.get(i);
player3.getList().add(poker);
}
}
for (int i = pokers.size() - 3; i < pokers.size(); i++) {
bottom.add(pokers.get(i));
}
// 打印player1的牌
List<Poker> p1 = player1.getList();
Collections.sort(p1);
System.out.println(p1);
// 打印player2的牌
List<Poker> p2 = player2.getList();
Collections.sort(p2);
System.out.println(p2);
// 打印player3的牌
List<Poker> p3 = player3.getList();
Collections.sort(p3);
System.out.println(p3);
// 打印底牌
System.out.println(bottom);
}
}
class Person {
// 存放牌的
private List<Poker> list = new ArrayList<Poker>();
public List<Poker> getList() {
return list;
}
public void setList(List<Poker> list) {
this.list = list;
}
}
class Poker implements Comparable<Poker> {
// 花色
private String color;
// 数字
private String number;
private static Map<String, Integer> colorDic = new HashMap<String, Integer>();
private static Map<String, Integer> numberDic = new HashMap<String, Integer>();
static {
colorDic.put("♦", 1);
colorDic.put("♣", 2);
colorDic.put("❤", 3);
colorDic.put("♠", 4);
colorDic.put("小",5 );
colorDic.put("大",6 );
numberDic.put("3", 3);
numberDic.put("4", 4);
numberDic.put("5", 5);
numberDic.put("6", 6);
numberDic.put("7", 7);
numberDic.put("8", 8);
numberDic.put("9", 9);
numberDic.put("10", 10);
numberDic.put("J", 11);
numberDic.put("Q", 12);
numberDic.put("K", 13);
numberDic.put("A", 14);
numberDic.put("2", 15);
numberDic.put("王", 16);
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public Poker(String color, String number) {
super();
this.color = color;
this.number = number;
}
public Poker() {
super();
}
@Override
public String toString() {
return this.color +" "+ this.number;
}
@Override
public int compareTo(Poker o) {
String color = o.getColor();
String number = o.getNumber();
if (numberDic.get(number) != numberDic.get(this.number)) {
/*System.out.println("-----------");
System.out.println(number);
System.out.println(numberDic.get(number));
System.out.println(this.number);
System.out.println(numberDic.get(this.number));
System.out.println("+++++++++++");*/
return numberDic.get(number)-numberDic.get(this.number) ;
}
return colorDic.get(color) - colorDic.get(this.color);
}
}
运行如下图: