国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

如何使用java集合模擬實(shí)現斗地主洗牌和發(fā)牌

發(fā)布時(shí)間:2021-09-27 17:50 來(lái)源:億速云 閱讀:0 作者:小新 欄目: 開(kāi)發(fā)技術(shù)

這篇文章給大家分享的是有關(guān)如何使用java集合模擬實(shí)現斗地主洗牌和發(fā)牌的內容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

1:用ArrayList集合實(shí)現

案例分析:

我們現在要做的是模擬斗地主小游戲來(lái)進(jìn)行洗牌和發(fā)牌。

具體步驟:

A:首先,創(chuàng )建一個(gè)ArrayList集合來(lái)存儲牌,將牌的花色和點(diǎn)數存儲在倆個(gè)字符串數組中中,然后用for循環(huán)加強遍歷將每張牌的花色點(diǎn)數及大王小王存儲在集合中。
B:進(jìn)行洗牌,調用collectionas的shuffle方法。
C:進(jìn)行發(fā)牌,創(chuàng )建四個(gè)ArrayList集合,分別用來(lái)存儲玩家一,玩家二,玩家三,和底牌對應發(fā)到手上的牌。然后用for循環(huán)遍歷這幅撲克牌用If語(yǔ)句判斷,然后發(fā)牌。
D:創(chuàng )建一個(gè)看牌的方法,調用即可。

具體代碼:

package com.study_01;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/*
 * 模擬斗地主洗牌和發(fā)牌
 * 分析步驟:
 * 1:創(chuàng  )建一個(gè)集合來(lái)存儲牌
 * 2:洗牌
 * 3:發(fā)牌
 * 4:看牌
 * 
 */
public class Poker1 {
    public static void main(String[] args) {
        //創(chuàng  )建一個(gè)集合來(lái)存牌
        ArrayList <String> Pokers=new ArrayList<>();
        String[] colors={"?","?","?","?"};
        String[] numbers={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
        for(String color:colors){
            for(String number:numbers){
                Pokers.add(color+number);   
            }
            Pokers.add("大王");
            Pokers.add("小王");
        }//洗牌
        Collections.shuffle(Pokers);
        //發(fā)牌
        /*創(chuàng  )建四個(gè)集合來(lái)存儲
         * 1:張三
         * 2:李四
         * 3:王麻
         * 4:底牌
         */
        ArrayList<String> Zhangsan=new ArrayList<>();
        ArrayList<String> Lisi=new ArrayList<>();
        ArrayList<String> Wangma=new ArrayList<>();
        ArrayList<String> Dipai=new ArrayList<>();
        for(int i=0;i<Pokers.size();i++){
            if(i>=Pokers.size()-3){
                Dipai.add(Pokers.get(i));
            }else if(i%3==0){
                Zhangsan.add(Pokers.get(i));
            }else if(i%3==1){
                Lisi.add(Pokers.get(i));
            }else if(i%3==2){
                Wangma.add(Pokers.get(i));
            }
        }//看牌
        lookPokers("張三",Zhangsan);
        lookPokers("李四",Lisi);
        lookPokers("王麻",Wangma);
        lookPokers("底牌",Dipai);     
    }
    private static void lookPokers(String name, ArrayList<String> Pokers){
        System.out.println(name+"的牌是:");
        for(String poker:Pokers){
            System.out.print(poker+" ");
        }System.out.println();  
    }
    }

運行結果:

2:用TreeMap集合實(shí)現

具體步驟:

A:創(chuàng )建TreeMap集合存儲牌,并且大的鍵對應大的牌,小的鍵對應小的牌,同上創(chuàng )建倆個(gè)數組,一個(gè)用來(lái)存儲花色,一個(gè)用來(lái)存儲點(diǎn)數,另外創(chuàng )建一個(gè)ArrayList集合,用來(lái)存儲沒(méi)有任意一張牌對應的索引。
B:.洗牌,洗的是索引(map集合中每一張牌對應的鍵),我們這里用的是ArrayList來(lái)存儲。
C:發(fā)牌,發(fā)的索引,并且對這個(gè)索引進(jìn)行排序,這是利用了TreeSet的有序性。
D:看牌,根據發(fā)到的索引去map集合中找出對應的值。

具體代碼:

package com.study_01;
import java.util.ArrayList;
import java.util.Collections;
import java.util.TreeMap;
import java.util.TreeSet;
/**
 * 1.創(chuàng  )建Map集合存儲牌,并且大的鍵對應大的牌,小的鍵對應小的牌
 * 2.洗牌,洗的是索引(map集合中每一張牌對應的鍵)
 * 3.發(fā)牌,發(fā)的索引,并且歲這個(gè)索引進(jìn)行排序
 * 4.看牌,根據發(fā)到的鍵去map集合中找出對應的值
 */
public class Poker2 {
    public static void main(String[] args) {
        //創(chuàng  )建一個(gè)TreeMap集合
        TreeMap<Integer,String> Pokers=new TreeMap<>();
        String[] colors={"?","?","?","?"};
        String[] numbers={"3","4","5","6","7","8","9","10","J","Q","K","A","2",};
        //創(chuàng  )建一個(gè)ArrayList集合,用來(lái)存儲沒(méi)有一張牌對應的索引
        ArrayList<Integer> indexs=new ArrayList<>();
        int index = 0;
        for(String color:colors){
            for(String number:numbers){
                Pokers.put(index, color+number);
                indexs.add(index);
                index++;    
            }//存大王,小王
            Pokers.put(index, "大王");
            indexs.add(index);
            index++;
            Pokers.put(index, "小王");
            indexs.add(index);
            index++;
        }//洗牌,洗的是索引(map集合中每一張牌對應的鍵)
        Collections.shuffle(indexs);
        //發(fā)牌,發(fā)的是索引根據索引來(lái)找它對應的值
        TreeSet<Integer> zhangsan=new TreeSet<>();
        TreeSet<Integer> lisi=new TreeSet<>();
        TreeSet<Integer> wangma=new TreeSet<>();
        TreeSet<Integer> dipai=new  TreeSet<>();
        for(int i=0;i<Pokers.size();i++){
            if(i>=Pokers.size()-3){
                dipai.add(indexs.get(i));
            }else if(i%3==0){
                zhangsan.add(indexs.get(i));
            }else if(i%3==1){
                lisi.add(indexs.get(i));
            }else if(i%3==2){
                wangma.add(indexs.get(i));
            }
        }//看牌
        lookPoker("張三",zhangsan,Pokers);
        lookPoker("李四",lisi,Pokers);
        lookPoker("王麻",wangma,Pokers);
        lookPoker("底牌",dipai,Pokers);   
    }
    private static void lookPoker(String name, TreeSet<Integer> indexs,
            TreeMap<Integer, String> Pokers) {
        System.out.println(name+"的牌是:");
        for(Integer index:indexs){
            System.out.print(Pokers.get(index));
        }System.out.println();
    }
}

運行結果:

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。

大屁股熟女一区二区三区| 四川少妇搡BBW搡BBBB| 成人免费看WWW网址入口| 波多野结衣免费一区视频| 亚洲精品偷拍无码不卡AV| 无码AV岛国片在线播放|