斗地主洗牌、发牌,重新排序

package co.yonglang.controller.android;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class Test {
private static final String[] pokerNum = { "A", "2", "3", "4", "5", "6", "7", "8", "9",
"10", "J", "Q", "K" };
private static final String[] pokerColor = { "黑桃", "红桃", "梅花", "方块" };

/**
*
* @return
*/
public static List<Card> newPoker() {
List<Card> list = new ArrayList<Card>();
Card card0=new Card();
Card card1=new Card();
for (int x = 0; x < pokerColor.length; x++) {
for (int y = 0; y < pokerNum.length; y++) {
Card card=new Card();
card.setColor(pokerColor[x]);
card.setNumber(pokerNum[y]);
switch(pokerColor[x]){
case "黑桃":card.setColorIndex("4"); break;
case "红桃":card.setColorIndex("3"); break;
case "梅花":card.setColorIndex("2"); break;
case "方块":card.setColorIndex("1"); break;
}
switch(pokerNum[y]){
case "A":card.setNumberIndex("12"); break;
case "2":card.setNumberIndex("13"); break;
case "3":card.setNumberIndex("1"); break;
case "4":card.setNumberIndex("2"); break;
case "5":card.setNumberIndex("3"); break;
case "6":card.setNumberIndex("4"); break;
case "7":card.setNumberIndex("5"); break;
case "8":card.setNumberIndex("6"); break;
case "9":card.setNumberIndex("7"); break;
case "10":card.setNumberIndex("8"); break;
case "J":card.setNumberIndex("9"); break;
case "Q":card.setNumberIndex("10"); break;
case "K":card.setNumberIndex("11"); break;
}
list.add(card);
}
}
card0.setColor("");
card0.setNumber("大王");
card0.setNumberIndex("15");
card0.setColorIndex("5");
card1.setColor("");
card1.setNumber("小王");
card1.setNumberIndex("14");
card1.setColorIndex("5");
list.add(card0);
list.add(card1);
return list;
}

/**
* 洗牌
* @param list
* @return
*/
public static List<Card> washPoker(List<Card> list) {
Collections.shuffle(list);
return list;
}

/**
* 发牌玩家
* @param l1
* @param l2
* @param l3
* @param poker
*/
public void playPoker(List<Card> l1, List<Card> l2, List<Card> l3,
List<Card> poker) {
List<Card> l0=new ArrayList<Card>();
for (int x = 0; x < poker.size(); x++) {
if (x < poker.size() - 3) {
l1.add(poker.get(x));
l2.add(poker.get(++x));
l3.add(poker.get(++x));
} else {
l0.add(poker.get(x));
}
}
//发完牌排序,从大到小
this.order(l1);
this.order(l2);
this.order(l3);
this.order(l0);
for(Card card:l0){
System.out.println(card.getColor()+card.getNumber());
}
System.out.println("玩家1 :============================================================================================");
for(Card card:l1){
System.out.println(card.getColor()+card.getNumber());
}
System.out.println("玩家2 : ============================================================================================");
for(Card card:l2){
System.out.println(card.getColor()+card.getNumber());
}
System.out.println("玩家3 :============================================================================================");
for(Card card:l3){
System.out.println(card.getColor()+card.getNumber());
}
System.out.println("============================================================================================");
}

//对list排序
public void order(List<Card> list){
Collections.sort(list,new Comparator<Card>() {
@Override
public int compare(Card o1, Card o2) {

int num =Integer.valueOf(o2.getNumberIndex()).compareTo(Integer.valueOf(o1.getNumberIndex()));
if(num ==0)
return Integer.valueOf(o2.getColorIndex()).compareTo(Integer.valueOf(o1.getColorIndex()));
return num;
}
});
}

public static void main(String[] args) {
List<Card> l1=new ArrayList<Card>();
List<Card> l2=new ArrayList<Card>();
List<Card> l3=new ArrayList<Card>();
List<Card> list=newPoker();
List<Card> washList=washPoker(list);
Test doudizhu=new Test();
doudizhu.playPoker(l1, l2, l3, washList);

}
}

posted @ 2016-05-05 14:21  Kevin_Zhou_9  阅读(591)  评论(0)    收藏  举报