Posted on 2012-02-22 09:28
齐纳尔多 阅读(624)
评论(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);

}

}

