思路:首先模拟出54张牌将这些牌用一个Arrlist存起来,然后洗牌,发牌,看牌。但是有个问题就是,看牌的时候如果不将其进行排序(这里指的排序是指让它按照斗地主里面的规则从大到小进行排列),那么牌就会看起来非常的乱。那么在这里我们先定义一个HashMap将牌面进行编号:
同时我们将这些key存在另一个ArraList里面,那么洗牌的话其实也就是将其顺序打乱即可,然后发牌将对应的牌存在TreeSet中那么它就能够对其自动排序,那么在看牌的时候牌面顺序就显得非常一致了。思路如下:
具体代码如下:
package lcanTest;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;
public class DouDiZhu {
public static void main(String[] args) {
String []colors = {"♥","♠","♦","♣"};
String []numbers = {"3","4","5","6",
"7","8","9","10","J","Q","K","A","2"};
HashMap<Integer,String> hashMap = new HashMap<Integer,String>();
ArrayList<Integer> arrList = new ArrayList<Integer>();
int index = 0;
for(String value:numbers){
for(String color:colors){
String str = color.concat(value);
hashMap.put(index, str);
arrList.add(index);
index ++;
}
}
hashMap.put(index, "小王");
arrList.add(index);
index ++;
hashMap.put(index, "大王");
arrList.add(index);
Collections.shuffle(arrList);
TreeSet<Integer>player1 = new TreeSet<Integer>();
TreeSet<Integer>player2 = new TreeSet<Integer>();
TreeSet<Integer>player3 = new TreeSet<Integer>();
TreeSet<Integer> diPai = new TreeSet<Integer>();
for(int i=0;i<arrList.size();i++){
if(i >= arrList.size()-3){
diPai.add(arrList.get(i));
}else if(i % 3 == 0){
player1.add(arrList.get(i));
}else if(i % 3 == 1){
player2.add(arrList.get(i));
}else if(i % 3 == 2){
player3.add(arrList.get(i));
}
}
lookPaker("player1", hashMap, player1);
lookPaker("player2", hashMap, player2);
lookPaker("player3", hashMap, player3);
lookPaker("diPai", hashMap, diPai);
}
public static void lookPaker(String name,HashMap<Integer,String> hashMap,TreeSet<Integer> treeSets){
System.out.print(name + "的牌是:");
for(Integer treeSet:treeSets){
String number = hashMap.get(treeSet);
System.out.print(number + " ");
}
System.out.println();
}
}