激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 使用JavaSE來模擬斗地主

使用JavaSE來模擬斗地主

2021-09-02 15:30佳明Ryan Java教程

這篇文章主要介紹了使用JavaSE來模擬斗地主,對棋牌游戲有研究的同學可以參考一下

通過模擬斗地主案例來練習集合的使用

結果預覽:

每次發牌后,三位玩家的手牌是隨機的并且已經按照手牌大小排完序,運行兩次驗證手牌的隨機性。

使用JavaSE來模擬斗地主

使用JavaSE來模擬斗地主

馬老師的牌還不錯,蕪湖~起飛

思路:

1.創建HashMap,鍵是編號,值是牌。
2.創建ArrayList,存儲編號。
3.創建花色數組和點數數組。
4.從0開始往HashMap里面存儲編號,并存儲對應的牌。同時往ArrayList里面存儲編號。
5.洗牌(洗的是編號),用Collections的shuffl()方法實現。
6.發牌(發的也是編號,為了保證編號是排序的,創建TreeSet集合。
7.定義方法看牌(遍歷TreeSet集合,獲取編號,到HashMap集合找對應的牌)
8.調用看牌方法

為了方便理解,我用圖形的方式來描述下過程:

使用JavaSE來模擬斗地主

具體代碼實現:

1.創建集合裝撲克牌

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//創建HashMap集合   key是編號用Integer  value是牌用String
            HashMap<Integer,String>  hm=new HashMap<>();
            //創建ArrayList集合用來存儲編號
            ArrayList<Integer> list=new ArrayList<>();
            //創建花色數組和點數數組
            String [] color={"♠", "♦", "♥","♣"};
            String [] number={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
            //從0開始往HashMap集合里面存儲編號,并存儲對應的牌。同時往ArrayList集合里面存儲編號
            int index=0;
            //增強For循環存儲花色和點數
            for(String num:number){
                for(String col:color){
 
                    hm.put(index,col+num);
                    list.add(index);
                    index++;
                }
            }
           //52張牌存完了 還剩大小王  現在添加進去
            hm.put(index,"小王");
            list.add(index);
            index++;
            hm.put(index,"大王");
            list.add(index);
 
            //以上的操作實現了把54張撲克牌放入一個集合容器。

2.洗牌和發牌

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//洗牌(洗的是編號),用collections的shuffle()方法實現。
         Collections.shuffle(list);
         //發牌  用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++){
             //定義一個變量接收索引
             int  a= list.get(x);
             //最后三個索引
             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.定義看牌方法

?
1
2
3
4
5
6
7
8
9
10
11
//定義看牌的方法(遍歷TreeSet集合,獲取編號,到HashMap集合找對應的牌)
  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();
  }

原碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package 模擬斗地主;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;
/*需求:
    通過程序實現 斗地主過程中的洗牌,發牌和看牌功能,并且為了方便看牌手牌要排序。
    思路:
    1:創建HashMap集合,鍵是編號,值是牌。
    2:創建Arraylist集合用于存儲編號。
    3:創建花色數組和點數數組。
    4:從0開始往HashMap集合里面存儲編號,并存儲對應的牌。同時往ArrayList集合里面存儲編號。
    5 :洗牌(洗的是編號),用collections的shuffle()方法實現。
    6:發牌(發的也是編號,為了保證編號是排序的,創建TreeSet集合接收
    7:定義方法看牌(遍歷TreeSet集合,獲取編號,到HashMap集合找對應的牌)
    8:調用方法看牌
    */
public class ChinesePoker {
    public static void main(String[] args) {
        //創建HashMap集合   key是編號用Integer  value是牌用String
        HashMap<Integer,String>  hm=new HashMap<>();
        //創建ArrayList集合用來存儲編號
        ArrayList<Integer> list=new ArrayList<>();
        //創建花色數組和點數數組
        String [] color={"♠", "♦", "♥","♣"};
        String [] number={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
        //從0開始往HashMap集合里面存儲編號,并存儲對應的牌。同時往ArrayList集合里面存儲編號
        int index=0;
        //增強For循環存儲花色和點數
        for(String num:number){
            for(String col:color){
 
                hm.put(index,col+num);
                list.add(index);
                index++;
            }
        }
       //52張牌存完了 還剩大小王  現在添加進去
        hm.put(index,"小王");
        list.add(index);
        index++;
        hm.put(index,"大王");
        list.add(index);
        //洗牌(洗的是編號),用collections的shuffle()方法實現。
        Collections.shuffle(list);
        //發牌  用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++){
            //定義一個變量接收索引
            int  a= list.get(x);
            //最后三個索引
            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);
            }
        }
        //調用看牌方法
        lookPoker("PDD",PDD,hm);
        lookPoker("大司馬",DaSiMa,hm);
        lookPoker("盧本偉",LuBenWei,hm);
        lookPoker("底牌",finalCard,hm);
    }
 
        //定義看牌的方法(遍歷TreeSet集合,獲取編號,到HashMap集合找對應的牌)
    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來模擬斗地主的詳細內容,更多關于JavaSE斗地主的資料請關注服務器之家其它相關文章!

原文鏈接:https://blog.csdn.net/JiaMing11_27/article/details/115480083

延伸 · 閱讀

精彩推薦
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7472021-02-04
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
主站蜘蛛池模板: 91精选视频在线观看 | 一级免费特黄视频 | 国产精品一区二区三区在线播放 | 精品99在线视频 | 黄色高清视频网站 | 亚洲3p激情在线观看 | 成人免费一区二区 | 黑人一区二区三区四区五区 | wankzhd| 中文字幕极速在线观看 | 国产精品视频成人 | 欧美性生活视频免费 | 舌头伸进添的我好爽高潮网站 | h视频免费在线 | 国产免费观看a大片的网站 欧美成人一级 | 中文在线日韩 | 视频一区 中文字幕 | 美国黄色毛片女人性生活片 | 亚洲爱爱网站 | 精品三区视频 | 色综合777 | 国产91亚洲精品一区二区三区 | 99久久久免费视频 | 免费观看视频网站 | 369看片你懂的小视频在线观看 | 免费a级毛片大学生免费观看 | 国产91亚洲精品一区二区三区 | 一区二区三区欧美在线 | 欧美成人精品一区二区三区 | 国产精品aⅴ | 99热高清 | 久久久久久久久久久av | 色污视频在线观看 | 亚洲第一视频在线 | 国产成人av一区二区 | 黑人三级毛片 | 黄色片网站在线免费观看 | 欧美亚洲一级 | 高清成人在线 | 18视频在线观看娇喘 | 999精品久久久 |