利用集合模擬鬥地主(2)

思路:
1)創建HashMap集合
創建ArrayList集合,來存儲編號
2)裝牌:給HashMap中添加編號,以及對應的牌(點色數組和花色數組遍歷之後的拼接),同時將編號添加ArrayList集合中
3)洗牌:洗的是編號
4)發牌:(發的也是編號,爲了保證牌是有序的,所有應該用TreeSet集合)
5)看牌:(遍歷TreeSet集合獲取到對應的編號,拿對應的編號在HashMap中找編號對應的牌)
代碼
:
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;

public class PokerDemo2 {
    public static void main(String[] args) {
        //創建HashMap集合
        HashMap<Integer, String> hm = new HashMap<Integer, String>();

        //創建ArrayList集合
        ArrayList<Integer> array = new ArrayList<Integer>();
        /*2)裝牌
         * 給HashMap中添加編號,以及對應的牌(點色數組和花色數組遍歷之後的拼接),同時
         * 將編號添加ArrayList集合中*/
        //創建花色數組
        String[] colors = {"♠","♥","♣","♦"};
        String[] numbers = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
        //給牌進行編號:從0開始
        int index = 0;
        for(String number : numbers){
            for(String color : colors){
                String poker = color.concat(number);
                hm.put(index, poker);
                array.add(index);
                index++;
            }
        }
        //添加其他元素
        hm.put(index, "小王");
        array.add(index);
        index++;
        hm.put(index, "大王");
        array.add(index);
        //洗牌
                //對集合操作的數組工具類
                Collections.shuffle(array);

                //4)發牌:(發的也是編號,爲了保證牌是有序的,所有應該用TreeSet<Integer>集合)
                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循環變量
                for(int x = 0 ; x < array.size() ; x ++){
                    if(x>= array.size() -3){
                        diPai.add(array.get(x)) ;
                    }else if(x % 3 == 0){
                        player1.add(array.get(x)) ;
                    }else if(x % 3 ==1){
                        player2.add(array.get(x)) ;
                    }else if(x % 3 ==2){
                        player3.add(array.get(x)) ;
                    }
                }


//              5)看牌(遍歷TreeSet集合獲取到對應的編號,拿對應的編號在HashMap中找編號對應的牌)    
                lookPoker("玩家1", player1, hm);
                lookPoker("玩家2", player2, hm);
                lookPoker("玩家3", player3, hm);
                lookPoker("底牌", diPai, hm);
            }   

            public static void lookPoker(String name,TreeSet<Integer> ts,
                        HashMap<Integer, String> hm){
                System.out.print(name+"的牌是:");
                //遍歷TreeSet集合獲取裏面的編號
                for(Integer key : ts){
                    //獲取到了所有的編號,通過大集合的對象通過get(k),獲取值
                    String s = hm.get(key) ;
                    System.out.print(s+" ");
                }
                System.out.println();
    }
}
結果
這裏寫圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章