java SE集合類實現鬥地主洗牌、牌排序
阿新 • • 發佈:2019-02-15
java的集合方便了我們管理和操作大量的資料,在很多地方都用多,特別在java Web要操作資料庫時,那是必不可少的!!!集合類的作用是用於儲存、檢索和操縱資料,以及將資料從一個方法傳輸至另一個方法等等。
很簡單的程式碼就可以實現
package list;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;
import org.junit.Test;
public class faatPaai {
@Test
public void SaiPaai() {
//HashMap的key方便發牌時獲取牌
HashMap<Integer,String> paais = new HashMap<Integer,String>();
ArrayList<Integer> arrys = new ArrayList<Integer>();
//牌的四種顏色
String[] colors = { "♠", "♥", "♣", "♦" };
//牌的數字,("A", "2")放在後面方便牌排序
String[] numbers = { "3" , "4", "5", "6", "7", "8", "9", "10",
"J", "Q", "K","A", "2" };
int index = 0;
//數字放在第一個for也是為方便牌排序
for (String number : numbers) {
for (String color : colors) {
paais.put(++index,color.concat(number));
arrys.add(index);
}
}
paais.put(++index,"小王" );
arrys.add(index);
paais.put(++index,"大王");
arrys.add(index);
//洗牌
Collections.shuffle(arrys);
//TreeSet類自帶排序,方便操作
TreeSet<Integer> peasant1 = new TreeSet<Integer>();
TreeSet<Integer> peasant2 = new TreeSet<Integer>();
TreeSet<Integer> landlord = new TreeSet<Integer>();
TreeSet<Integer> daiPaai = new TreeSet<Integer>();
for (int i = 0; i < paais.size(); i++) {
//牌剩下三張是發給底牌
if (i >= paais.size() - 3) {
daiPaai.add(arrys.get(i));
} else if (i % 3 == 0) {
peasant1.add(arrys.get(i));
} else if (i % 3 == 1) {
peasant2.add(arrys.get(i));
} else if (i % 3 == 2) {
landlord.add(arrys.get(i));
}
}
//發牌
faaiPaai("底牌",daiPaai,paais);
faaiPaai("農民",peasant1,paais);
faaiPaai("農民",peasant2,paais);
faaiPaai("地主",landlord,paais);
}
public void faaiPaai(String name,TreeSet<Integer> personage,HashMap<Integer,String> paais){
System.out.print(name+"牌為:");
for(Integer paaisou : personage){
String paai = paais.get(paaisou);
System.out.print(paai+" ");
}
System.out.println();
}
}