Posted on 2012-02-22 09:28
齐纳尔多 阅读(613)
评论(0) 编辑 收藏 所属分类:
java
package cn.com.pbqi.corejava;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.TreeMap;
public class CardGame {
private int pNum;
private List<String> cardList = new ArrayList<String>(54);
private Map<String,List<String>> map = new TreeMap<String,List<String>>();
/** *//**
* 打牌的人数,最少2个人,最多4个人
* @param pNum
*/
public CardGame(int pNum) {
if(pNum < 2 || pNum > 4) {
throw new IllegalArgumentException("CardPlayer must between 2 and 4, CardPlayer=" + pNum);
}
this.pNum = pNum;
for(int i = 0; i <pNum; i++) {
map.put(i+"-", new ArrayList<String>());
}
this.initCards();
this.distribute();
this.display();
}
/** *//**
* 初始化一副扑克
*/
public List<String> initCards() {
String[] type = {"r","b","s","m"};
String[] cards = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
String[] kings = {"大王","小王"};
for(int i = 0; i < type.length; i++) {
for(int j = 0; j < cards.length;j++) {
cardList.add(cards[j]+type[i]);
}
}
for(int k = 0; k < kings.length; k++){
cardList.add(kings[k]);
}
return cardList;
}
/** *//**
* 发牌
*/
public void distribute() {
Random r = new Random();
int len = cardList.size();
int bakLen = len;
for(int i = 0; i < len; i++) {
int rNum = r.nextInt(bakLen);
String card = cardList.get(rNum);
int left = i % pNum;
map.get(left+"-").add(card);
cardList.remove(rNum);
bakLen--;
}
}
public void display() {
System.out.println("======r:红桃,b:黑桃,s:方块,m:米花===========");
for(Iterator<String> iter = map.keySet().iterator(); iter.hasNext();) {
String key = iter.next();
List<String> list = map.get(key);
System.out.print(key+ " 的牌是===");
for(int i = 0; i < list.size();i++) {
System.out.print(list.get(i));
if(i != list.size() -1) {
System.out.print(",");
}
}
System.out.println("");
}
}
public static void main(String[] args) {
CardGame cg = new CardGame(4);
}
}