一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

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

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

服務器之家 - 編程語言 - Java教程 - java集合模擬實現斗地主洗牌和發牌

java集合模擬實現斗地主洗牌和發牌

2022-01-19 10:52upupxi Java教程

這篇文章主要為大家詳細介紹了java集合模擬實現斗地主洗牌和發牌,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文為大家分享了java實現斗地主洗牌和發牌的具體代碼,供大家參考,具體內容如下

 

1:用ArrayList集合實現

案例分析:

我們現在要做的是模擬斗地主小游戲來進行洗牌和發牌。

具體步驟:

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

具體代碼:

package com.study_01;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/*
* 模擬斗地主洗牌和發牌
* 分析步驟:
* 1:創建一個集合來存儲牌
* 2:洗牌
* 3:發牌
* 4:看牌
* 
*/
public class Poker1 {
  public static void main(String[] args) {
      //創建一個集合來存牌
      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);
      //發牌
      /*創建四個集合來存儲
       * 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();  
  }
  }

運行結果:

java集合模擬實現斗地主洗牌和發牌

 

2:用TreeMap集合實現

具體步驟:

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

具體代碼:

package com.study_01;
import java.util.ArrayList;
import java.util.Collections;
import java.util.TreeMap;
import java.util.TreeSet;
/**
* 1.創建Map集合存儲牌,并且大的鍵對應大的牌,小的鍵對應小的牌
* 2.洗牌,洗的是索引(map集合中每一張牌對應的鍵)
* 3.發牌,發的索引,并且歲這個索引進行排序
* 4.看牌,根據發到的鍵去map集合中找出對應的值
*/
public class Poker2 {
  public static void main(String[] args) {
      //創建一個TreeMap集合
      TreeMap<Integer,String> Pokers=new TreeMap<>();
      String[] colors={"♥","♠","♦","♣"};
      String[] numbers={"3","4","5","6","7","8","9","10","J","Q","K","A","2",};
      //創建一個ArrayList集合,用來存儲沒有一張牌對應的索引
      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);
      //發牌,發的是索引根據索引來找它對應的值
      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();
  }
}

運行結果:

java集合模擬實現斗地主洗牌和發牌

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/weixin_33645586/article/details/71629829

延伸 · 閱讀

精彩推薦
  • 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教程Java實現搶紅包功能

    Java實現搶紅包功能

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

    littleschemer13532021-05-16
  • Java教程Java8中Stream使用的一個注意事項

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

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

    阿杜7482021-02-04
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

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

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

    spcoder14552021-10-18
  • Java教程20個非常實用的Java程序代碼片段

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

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

    lijiao5352020-04-06
  • Java教程小米推送Java代碼

    小米推送Java代碼

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

    富貴穩中求8032021-07-12
  • Java教程升級IDEA后Lombok不能使用的解決方法

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

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

    程序猿DD9332021-10-08
主站蜘蛛池模板: 国产香蕉一区二区精品视频 | 欧洲第一页 | 小柔的性放荡羞辱日记 | 九九99热 | 亚洲swag精品自拍一区 | 四虎在线永久视频观看 | 97热久久免费频精品99国产成人 | 久久久久久久久女黄9999 | a毛片免费观看完整 | 天天天做天天天天爱天天想 | 亚欧成人中文字幕一区 | 亚裔aⅴ艳星katsuni | 隔壁的漂亮邻居hd中文 | 国产自产一区c | 成人a级特黄毛片 | 日本一级不卡一二三区免费 | 九九精品视频在线观看 | 动漫美女被吸乳羞羞小说 | 欧美国产视频 | 亚洲熟区 | 国产区综合另类亚洲欧美 | pregnantsexxx临盆孕妇 | 极品虎白女在线观看一线天 | 亚洲 欧美 国产 综合 在线 | 猛男深夜狂cao小男生 | 国产区小视频 | www.九九热| 美女机机对机机的视频(免费) | 双性少爷受糙汉攻h | 日本一区二区三区精品 | 深夜免费在线视频 | bbbxxx乱大交欧美小说 | 日本韩国无矿砖码 | 91精品国产综合久久香蕉 | 国产精品视频色拍拍 | 图片亚洲va欧美va国产综合 | 国产欧美日韩精品一区二 | 日剧整部剧护妻狂魔免费观看全集 | 日b在线观看 | 乌克兰少妇大胆大BBW | 国产精品福利一区二区亚瑟 |