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

使用JavaSE來(lái)模擬斗地主

 更新時(shí)間:2021年04月08日 15:23:29   作者:佳明Ryan  
這篇文章主要介紹了使用JavaSE來(lái)模擬斗地主,對(duì)棋牌游戲有研究的同學(xué)可以參考一下

通過(guò)模擬斗地主案例來(lái)練習(xí)集合的使用

結(jié)果預(yù)覽:

每次發(fā)牌后,三位玩家的手牌是隨機(jī)的并且已經(jīng)按照手牌大小排完序,運(yùn)行兩次驗(yàn)證手牌的隨機(jī)性。

馬老師的牌還不錯(cuò),蕪湖~起飛

思路:

1.創(chuàng)建HashMap,鍵是編號(hào),值是牌。
2.創(chuàng)建ArrayList,存儲(chǔ)編號(hào)。
3.創(chuàng)建花色數(shù)組和點(diǎn)數(shù)數(shù)組。
4.從0開(kāi)始往HashMap里面存儲(chǔ)編號(hào),并存儲(chǔ)對(duì)應(yīng)的牌。同時(shí)往ArrayList里面存儲(chǔ)編號(hào)。
5.洗牌(洗的是編號(hào)),用Collections的shuffl()方法實(shí)現(xiàn)。
6.發(fā)牌(發(fā)的也是編號(hào),為了保證編號(hào)是排序的,創(chuàng)建TreeSet集合。
7.定義方法看牌(遍歷TreeSet集合,獲取編號(hào),到HashMap集合找對(duì)應(yīng)的牌)
8.調(diào)用看牌方法

為了方便理解,我用圖形的方式來(lái)描述下過(guò)程:

具體代碼實(shí)現(xiàn):

1.創(chuàng)建集合裝撲克牌

 
//創(chuàng)建HashMap集合   key是編號(hào)用Integer  value是牌用String
            HashMap<Integer,String>  hm=new HashMap<>();
            //創(chuàng)建ArrayList集合用來(lái)存儲(chǔ)編號(hào)
            ArrayList<Integer> list=new ArrayList<>();
            //創(chuàng)建花色數(shù)組和點(diǎn)數(shù)數(shù)組
            String [] color={"♠", "♦", "♥","♣"};
            String [] number={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
            //從0開(kāi)始往HashMap集合里面存儲(chǔ)編號(hào),并存儲(chǔ)對(duì)應(yīng)的牌。同時(shí)往ArrayList集合里面存儲(chǔ)編號(hào)
            int index=0;
            //增強(qiáng)For循環(huán)存儲(chǔ)花色和點(diǎn)數(shù)
            for(String num:number){
                for(String col:color){

                    hm.put(index,col+num);
                    list.add(index);
                    index++;
                }
            }
           //52張牌存完了 還剩大小王  現(xiàn)在添加進(jìn)去
            hm.put(index,"小王");
            list.add(index);
            index++;
            hm.put(index,"大王");
            list.add(index);

            //以上的操作實(shí)現(xiàn)了把54張撲克牌放入一個(gè)集合容器。
            

2.洗牌和發(fā)牌

   //洗牌(洗的是編號(hào)),用collections的shuffle()方法實(shí)現(xiàn)。
            Collections.shuffle(list);
            //發(fā)牌  用TreeSet接收  用三位玩家名字命名
            TreeSet<Integer> PDD=new TreeSet<>();
            TreeSet<Integer> DaSiMa=new TreeSet<>();
            TreeSet<Integer> LuBenWei=new TreeSet<>();
            //三張底牌
            TreeSet<Integer> finalCard=new TreeSet<>();
            for(int x=0;x<list.size();x++){
                //定義一個(gè)變量接收索引
                int  a= list.get(x);
                //最后三個(gè)索引
                if(x>=list.size()-3){
              finalCard.add(a);
                }else if(x%3 == 0){
                    PDD.add(a);
                }else if(x%3 == 1){
                    DaSiMa.add(a);
                }else {
                    LuBenWei.add(a);
                }
            }

3.定義看牌方法

      //定義看牌的方法(遍歷TreeSet集合,獲取編號(hào),到HashMap集合找對(duì)應(yīng)的牌)
        public  static void lookPoker(String name,TreeSet<Integer> ts,HashMap<Integer,String>  hm ){
            System.out.print(name+"的手牌為:");
            //遍歷牌 就是遍歷索引
            for(Integer key:ts){

                String poker = hm.get(key);
                System.out.print(poker+" ");
            }
            System.out.println();
        }

原碼:

    package 模擬斗地主;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.HashMap;
    import java.util.TreeSet;
    /*需求:
        通過(guò)程序?qū)崿F(xiàn) 斗地主過(guò)程中的洗牌,發(fā)牌和看牌功能,并且為了方便看牌手牌要排序。
        思路:
        1:創(chuàng)建HashMap集合,鍵是編號(hào),值是牌。
        2:創(chuàng)建Arraylist集合用于存儲(chǔ)編號(hào)。
        3:創(chuàng)建花色數(shù)組和點(diǎn)數(shù)數(shù)組。
        4:從0開(kāi)始往HashMap集合里面存儲(chǔ)編號(hào),并存儲(chǔ)對(duì)應(yīng)的牌。同時(shí)往ArrayList集合里面存儲(chǔ)編號(hào)。
        5 :洗牌(洗的是編號(hào)),用collections的shuffle()方法實(shí)現(xiàn)。
        6:發(fā)牌(發(fā)的也是編號(hào),為了保證編號(hào)是排序的,創(chuàng)建TreeSet集合接收
        7:定義方法看牌(遍歷TreeSet集合,獲取編號(hào),到HashMap集合找對(duì)應(yīng)的牌)
        8:調(diào)用方法看牌
        */
    public class ChinesePoker {
        public static void main(String[] args) {
            //創(chuàng)建HashMap集合   key是編號(hào)用Integer  value是牌用String
            HashMap<Integer,String>  hm=new HashMap<>();
            //創(chuàng)建ArrayList集合用來(lái)存儲(chǔ)編號(hào)
            ArrayList<Integer> list=new ArrayList<>();
            //創(chuàng)建花色數(shù)組和點(diǎn)數(shù)數(shù)組
            String [] color={"♠", "♦", "♥","♣"};
            String [] number={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
            //從0開(kāi)始往HashMap集合里面存儲(chǔ)編號(hào),并存儲(chǔ)對(duì)應(yīng)的牌。同時(shí)往ArrayList集合里面存儲(chǔ)編號(hào)
            int index=0;
            //增強(qiáng)For循環(huán)存儲(chǔ)花色和點(diǎn)數(shù)
            for(String num:number){
                for(String col:color){

                    hm.put(index,col+num);
                    list.add(index);
                    index++;
                }
            }
           //52張牌存完了 還剩大小王  現(xiàn)在添加進(jìn)去
            hm.put(index,"小王");
            list.add(index);
            index++;
            hm.put(index,"大王");
            list.add(index);
            //洗牌(洗的是編號(hào)),用collections的shuffle()方法實(shí)現(xiàn)。
            Collections.shuffle(list);
            //發(fā)牌  用TreeSet接收  用三位玩家名字命名
            TreeSet<Integer> PDD=new TreeSet<>();
            TreeSet<Integer> DaSiMa=new TreeSet<>();
            TreeSet<Integer> LuBenWei=new TreeSet<>();
            //三張底牌
            TreeSet<Integer> finalCard=new TreeSet<>();
            for(int x=0;x<list.size();x++){
                //定義一個(gè)變量接收索引
                int  a= list.get(x);
                //最后三個(gè)索引
                if(x>=list.size()-3){
              finalCard.add(a);
                }else if(x%3 == 0){
                    PDD.add(a);
                }else if(x%3 == 1){
                    DaSiMa.add(a);
                }else {
                    LuBenWei.add(a);
                }
            }
            //調(diào)用看牌方法
            lookPoker("PDD",PDD,hm);
            lookPoker("大司馬",DaSiMa,hm);
            lookPoker("盧本偉",LuBenWei,hm);
            lookPoker("底牌",finalCard,hm);
        }

            //定義看牌的方法(遍歷TreeSet集合,獲取編號(hào),到HashMap集合找對(duì)應(yīng)的牌)
        public  static void lookPoker(String name,TreeSet<Integer> ts,HashMap<Integer,String>  hm ){
            System.out.print(name+"的手牌為:");
            //遍歷牌 就是遍歷索引
            for(Integer key:ts){

                String poker = hm.get(key);
                System.out.print(poker+" ");
            }
            System.out.println();
        }
    }

以上就是使用JavaSE來(lái)模擬斗地主的詳細(xì)內(nèi)容,更多關(guān)于JavaSE斗地主的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringBoot靜態(tài)資源映射規(guī)則淺析

    SpringBoot靜態(tài)資源映射規(guī)則淺析

    這篇文章主要介紹了SpringBoot靜態(tài)資源映射規(guī)則,今天在玩SpringBoot的demo的時(shí)候,放了張圖片在resources目錄下,啟動(dòng)區(qū)訪問(wèn)的時(shí)候,突然好奇是識(shí)別哪些文件夾來(lái)展示靜態(tài)資源的, 為什么有時(shí)候放的文件夾不能顯示,有的卻可以
    2023-02-02
  • 基于Spring MVC 簡(jiǎn)介及入門小例子(推薦)

    基于Spring MVC 簡(jiǎn)介及入門小例子(推薦)

    下面小編就為大家?guī)?lái)一篇基于Spring MVC 簡(jiǎn)介及入門小例子(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • Springboot項(xiàng)目快速實(shí)現(xiàn)過(guò)濾器功能

    Springboot項(xiàng)目快速實(shí)現(xiàn)過(guò)濾器功能

    上篇文章已經(jīng)給大家介紹了Springboot項(xiàng)目如何快速實(shí)現(xiàn)Aop功能,這篇文章給大家介紹Springboot項(xiàng)目如何快速實(shí)現(xiàn)過(guò)濾器功能,感興趣的小伙伴可以參考閱讀
    2023-03-03
  • IntelliJ?IDEA的代碼擱置功能實(shí)現(xiàn)

    IntelliJ?IDEA的代碼擱置功能實(shí)現(xiàn)

    本文主要介紹了IntelliJ?IDEA的代碼擱置功能實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Spring?boot?Thymeleaf配置國(guó)際化頁(yè)面詳解

    Spring?boot?Thymeleaf配置國(guó)際化頁(yè)面詳解

    這篇文章主要給大家介紹了關(guān)于Spring?Boot?Thymeleaf實(shí)現(xiàn)國(guó)際化的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring?Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Spring boot如何開(kāi)啟跨域配置

    Spring boot如何開(kāi)啟跨域配置

    這篇文章主要介紹了Spring boot如何開(kāi)啟跨域配置問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 一文教會(huì)你如何從0到1搭建一個(gè)SpringBoot項(xiàng)目

    一文教會(huì)你如何從0到1搭建一個(gè)SpringBoot項(xiàng)目

    今天剛好學(xué)習(xí)到SpringBoot,就順便記錄一下吧,下面這篇文章主要給大家介紹了關(guān)于如何從0到1搭建一個(gè)SpringBoot項(xiàng)目的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • Java線程池隊(duì)列LinkedTransferQueue示例詳解

    Java線程池隊(duì)列LinkedTransferQueue示例詳解

    這篇文章主要為大家介紹了Java線程池隊(duì)列LinkedTransferQueue示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 深入理解Java中沒(méi)那么簡(jiǎn)單的單例模式

    深入理解Java中沒(méi)那么簡(jiǎn)單的單例模式

    這篇文章主要給大家詳細(xì)介紹了Java單例模式,關(guān)于Java中的單例模式并非看起來(lái)那么簡(jiǎn)單的,為什么要這么說(shuō)呢?下面通過(guò)這篇文章來(lái)一起看看吧,有需要的朋友們可以參考借鑒。
    2017-01-01
  • Spring?Data?Jpa?中原生查詢?REGEXP?的使用詳解

    Spring?Data?Jpa?中原生查詢?REGEXP?的使用詳解

    這篇文章主要介紹了Spring?Data?Jpa?中原生查詢?REGEXP?的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評(píng)論

浦城县| 内黄县| 淄博市| 长寿区| 修武县| 石泉县| 通辽市| 宿松县| 合阳县| 乌兰察布市| 新化县| 黔东| 颍上县| 象州县| 潞西市| 噶尔县| 连山| 和顺县| 梁平县| 韶山市| 宁都县| 公安县| 弋阳县| 杭州市| 普陀区| 武义县| 淳安县| 拜城县| 江安县| 方山县| 梁山县| 兴文县| 肥乡县| 宣恩县| 黑水县| 康保县| 夏津县| 石棉县| 广汉市| 惠来县| 巴青县|