最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java使用集合實現(xiàn)斗地主分牌完整代碼

 更新時間:2024年05月15日 10:26:07   作者:哈__  
在斗地主游戲中,通常是將一副牌平均分成3份,每份17張牌,并留3張底牌,我們可以使用集合來實現(xiàn)這一功能,這篇文章主要給大家介紹了關于Java使用集合實現(xiàn)斗地主分牌的相關資料,需要的朋友可以參考下

前言

今天使用集合TreeSet來實現(xiàn)一個斗地主的分牌流程。

TreeSet集合的一個特點就是 元素有序,這樣就方便我們分的牌自動排序。

0.思路

1.創(chuàng)建玩家手牌集合

我們到時候分的牌都存儲在這里,但你可能會有疑問,因為存儲的泛型是Integer,但撲克牌是有花色的,這該如何實現(xiàn)?

         TreeSet<Integer> zhangsan=new TreeSet<Integer>();
        TreeSet<Integer> lisi=new TreeSet<Integer>();
        TreeSet<Integer> wangwu=new TreeSet<Integer>();
        TreeSet<Integer> dipai=new TreeSet<Integer>();

2.創(chuàng)建牌堆 

我們創(chuàng)建了一個名為poke的HashMap結構,poke用來存儲我們的撲克,而poke的key是每一張牌的一個id,value就是具體的牌。

        HashMap<Integer,String>poke=new HashMap<Integer,String>();
        String[] color={"?","?","?","?"};
        String[] number={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};

我們到時候洗牌的時候,洗的是這些id,但是并不是直接在poke中洗,poke的作用只是記錄我們有哪些牌。所以 我們在創(chuàng)建一個用來洗牌的數(shù)組,并把所有的id放入。

        ArrayList<Integer> xipai=new ArrayList<Integer>();

3. 把牌放入牌堆

遍歷我們的String數(shù)組,把花色和牌號組合一下并放入poke中,同時把poke中的key放入我們的洗牌集合中。最后不要忘了大小王。

        int index=0;
        for(String Number:number){
            for(String Color:color){
                String POKE=Color+Number;
                poke.put(index,POKE);
                xipai.add(index);
                index+=1;
            }
        }
        poke.put(52,"小王");
        poke.put(53,"大王");
        xipai.add(52);
        xipai.add(53);

4.洗牌 

一行代碼即可,使用Collecitons自帶的數(shù)組打亂方法。

    Collections.shuffle(xipai);

5.進行分牌 

如果只剩下最后三張了,就直接放入到我們的底牌集合當中,否則的話就進行模3取余操作進行判斷應該分給誰。

        for(int i=0;i<xipai.size();i++){
            if(i>=xipai.size()-3){
                dipai.add(xipai.get(i));
            }else{
                if(i%3==0){
                    zhangsan.add(xipai.get(i));
                }else if(i%3==1){
                    lisi.add(xipai.get(i));
                }else
                    wangwu.add(xipai.get(i));
            }
        }

6.完整代碼 

public class Poker {
    public static void main(String[] args) {
        HashMap<Integer,String>poke=new HashMap<Integer,String>();
        String[] color={"?","?","?","?"};
        String[] number={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
        ArrayList<Integer> xipai=new ArrayList<Integer>();
        TreeSet<Integer> zhangsan=new TreeSet<Integer>();
        TreeSet<Integer> lisi=new TreeSet<Integer>();
        TreeSet<Integer> wangwu=new TreeSet<Integer>();
        TreeSet<Integer> dipai=new TreeSet<Integer>();
        int index=0;
        for(String Number:number){
            for(String Color:color){
                String POKE=Color+Number;
                poke.put(index,POKE);
                xipai.add(index);
                index+=1;
            }
        }
        poke.put(52,"小王");
        poke.put(53,"大王");
        xipai.add(52);
        xipai.add(53);
        Collections.shuffle(xipai);
        //進行發(fā)牌
        for(int i=0;i<xipai.size();i++){
            if(i>=xipai.size()-3){
                dipai.add(xipai.get(i));
            }else{
                if(i%3==0){
                    zhangsan.add(xipai.get(i));
                }else if(i%3==1){
                    lisi.add(xipai.get(i));
                }else
                    wangwu.add(xipai.get(i));
            }
        }
        //進行看牌,用方法實現(xiàn)
        LookPoker("張三",gyh,poke);
        LookPoker("李四",zch,poke);
        LookPoker("王五",wjq,poke);
        LookPoker("底牌",dipai,poke);
        //System.out.println(poke);
    }
    public static void LookPoker(String name,TreeSet<Integer>set,HashMap<Integer,String>map){
        System.out.print(name+"的牌是:");
        for(Integer i:set){
            String poke=map.get(i);
            System.out.print(poke+" ");
        }
        System.out.println();
    }
}

總結 

到此這篇關于Java使用集合實現(xiàn)斗地主分牌完整代碼的文章就介紹到這了,更多相關Java集合實現(xiàn)斗地主分牌內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

平泉县| 陆丰市| 平乐县| 凤阳县| 井研县| 宽甸| 灌云县| 吉隆县| 徐水县| 工布江达县| 称多县| 铜川市| 兴安县| 调兵山市| 青浦区| 霸州市| 偃师市| 县级市| 芜湖市| 鹤庆县| 房产| 恩施市| 克什克腾旗| 土默特右旗| 青河县| 温州市| 金乡县| 崇信县| 辽宁省| 文成县| 湘潭县| 堆龙德庆县| 和顺县| 红桥区| 乳源| 理塘县| 吴川市| 涡阳县| 永和县| 绥阳县| 盈江县|