package porker;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;
public class Porke2 {
/**
* * A:案例演示
* 模擬鬥地主洗牌和發牌並對牌進行排序的代碼實現
*
* 分析:
* 1,買一副撲克,其實就是自己創建一個集合對象,將撲克牌存儲進去
* 2,洗牌
* 3,發牌
* 4,看牌
*/
public static void main(String[] args) {
//模擬買一副牌
HashMap<Integer,String> poker = new HashMap<>();
//模擬序號
ArrayList<Integer> list = new ArrayList<>();
//設置標號
int index = 0;
//設置花色
String [] color = {"♠", "♥", "♣", "♦"};
//設置號碼
String [] number = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q","K", "A", "2"};
//合成一副牌
for(String s1 : color) {
for(String s2 : number) {
//根據編號將牌添加進poker集合中
poker.put(index, s1.concat(s2));
//將編號添加到編號集合中
list.add(index);
//每一次添加完編號集合都將編號加1
index++;
}
}
//添加大王和小王
poker.put(index, "小王");
list.add(index);
index++;
poker.put(index, "大王");
list.add(index);
//洗牌(將List編號集合打亂)
Collections.shuffle(list);
//設置玩家
TreeSet<Integer> player_A = new TreeSet<>();
TreeSet<Integer> player_B = new TreeSet<>();
TreeSet<Integer> player_C = new TreeSet<>();
TreeSet<Integer> player_Hand = new TreeSet<>();
//給玩家發牌
for(int i =0 ; i<list.size();i++) {
if(i>=list.size()-3) {
//給player_Hand集合添加打亂後抽取到的編號
player_Hand.add(list.get(i));
}else if (i % 3 == 0 ) {
//給player_A集合添加打亂後抽取到的編號
player_A.add(list.get(i));
}else if (i % 3 ==1 ) {
//給player_B集合添加打亂後抽取到的編號
player_B.add(list.get(i));
}else {
//給player_C集合添加打亂後抽取到的編號
player_C.add(list.get(i));
}
}
//玩家明牌
ShowPoker(poker, player_A, "筱某佳一號");
ShowPoker(poker, player_B, "筱某佳二號");
ShowPoker(poker, player_C, "筱某佳三號");
ShowPoker(poker, player_Hand, "底牌");
}
//設置明牌方法
public static void ShowPoker(HashMap<Integer, String> Poker , TreeSet<Integer> Player,String name ) {
//將每一個玩家的poker集合打印
System.out.print(name+" 的牌是");
//將玩家抽取到的打亂的編號給 i 進行迭代
for(Integer i : Player) {
//迭代得到的i給poker集合獲取,每一個編號已經是對應好了一種牌(第34行代碼實現)
System.out.print(Poker.get(i)+" ");
}
//換行
System.out.println();
}
}
測試結果:
筱某佳一號 的牌是♠5 ♠J ♠K ♠A ♥3 ♥7 ♥8 ♥J ♥2 ♣4 ♣8 ♣9 ♣K ♣A ♦7 ♦K ♦2
筱某佳二號 的牌是♠3 ♠4 ♠7 ♠9 ♥5 ♥6 ♥10 ♥A ♣10 ♣Q ♣2 ♦3 ♦6 ♦J ♦A 小王 大王
筱某佳三號 的牌是♠6 ♠8 ♠10 ♠2 ♥4 ♥9 ♥Q ♥K ♣3 ♣6 ♣7 ♣J ♦4 ♦5 ♦9 ♦10 ♦Q
底牌 的牌是♠Q ♣5 ♦8