思路:首先模擬出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();
}
}