詳解java_ 集合綜合案例:斗地主
案例介紹
按照斗地主的規(guī)則,完成洗牌發(fā)牌的動(dòng)作。 具體規(guī)則: 使用54張牌打亂順序,三個(gè)玩家參與游戲,三人交替摸牌,每人17張牌,最后三張留作底牌。
案例分析
1.準(zhǔn)備牌:
牌可以設(shè)計(jì)為一個(gè)ArrayList,每個(gè)字符串為一張牌。 每張牌由花色數(shù)字兩部分組成,我們可以使用花色 集合與數(shù)字集合嵌套迭代完成每張牌的組裝。 牌由Collections類的shuffle方法進(jìn)行隨機(jī)排序。
2.發(fā)牌
將每個(gè)人以及底牌設(shè)計(jì)為ArrayList,將最后3張牌直接存放于底牌,剩余牌通過對(duì)3取模依次發(fā)牌。
3.看牌
直接打印每個(gè)集合。
代碼實(shí)現(xiàn)
import java.util.ArrayList; import java.util.Collections; public class Poker { public static void main(String[] args) { /* * 1: 準(zhǔn)備牌操作 */ //1.1 創(chuàng)建牌盒 將來存儲(chǔ)牌面的 ArrayList<String> pokerBox = new ArrayList<String>(); //1.2 創(chuàng)建花色集合 ArrayList<String> colors = new ArrayList<String>(); //1.3 創(chuàng)建數(shù)字集合 ArrayList<String> numbers = new ArrayList<String>(); //1.4 分別給花色 以及 數(shù)字集合添加元素 colors.add("♥"); colors.add("♦"); colors.add("♠"); colors.add("♣"); for(int i = 2;i<=10;i++){ numbers.add(i+""); } numbers.add("J"); numbers.add("Q"); numbers.add("K"); numbers.add("A"); //1.5 創(chuàng)造牌 拼接牌操作 // 拿出每一個(gè)花色 然后跟每一個(gè)數(shù)字 進(jìn)行結(jié)合 存儲(chǔ)到牌盒中 for (String color : colors) { //color每一個(gè)花色 guilian //遍歷數(shù)字集合 for(String number : numbers){ //結(jié)合 String card = color+number; //存儲(chǔ)到牌盒中 pokerBox.add(card); } } //1.6大王小王 pokerBox.add("小☺"); pokerBox.add("大☠"); // System.out.println(pokerBox); //洗牌 是不是就是將 牌盒中 牌的索引打亂 // Collections類 工具類 都是 靜態(tài)方法 // shuffer方法 /* * static void shuffle(List<?> list) * 使用默認(rèn)隨機(jī)源對(duì)指定列表進(jìn)行置換。 */ //2:洗牌 Collections.shuffle(pokerBox); //3 發(fā)牌 //3.1 創(chuàng)建 三個(gè) 玩家集合 創(chuàng)建一個(gè)底牌集合 ArrayList<String> player1 = new ArrayList<String>(); ArrayList<String> player2 = new ArrayList<String>(); ArrayList<String> player3 = new ArrayList<String>(); ArrayList<String> dipai = new ArrayList<String>(); //遍歷 牌盒 必須知道索引 for(int i = 0;i<pokerBox.size();i++){ //獲取 牌面 String card = pokerBox.get(i); //留出三張底牌 存到 底牌集合中 if(i>=51){//存到底牌集合中 dipai.add(card); } else { //玩家1 %3 ==0 if(i%3==0){ player1.add(card); }else if(i%3==1){//玩家2 player2.add(card); }else{//玩家3 player3.add(card); } } } //看看 System.out.println("令狐沖:"+player1); System.out.println("田伯光:"+player2); System.out.println("綠竹翁:"+player3); System.out.println("底牌:"+dipai); } }
以上所述是小編給大家介紹的java_ 集合綜合案例:斗地主詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- java實(shí)現(xiàn)簡(jiǎn)單斗地主(看牌排序)
- java實(shí)現(xiàn)斗地主游戲
- Java實(shí)現(xiàn)斗地主最簡(jiǎn)代碼實(shí)例
- java實(shí)現(xiàn)模仿斗地主發(fā)牌
- Java實(shí)現(xiàn)簡(jiǎn)單的斗地主游戲
- Java實(shí)現(xiàn)斗地主案例
- java實(shí)現(xiàn)斗地主發(fā)牌系統(tǒng)
- java模擬實(shí)現(xiàn)斗地主發(fā)牌小程序
- 基于java實(shí)現(xiàn)斗地主代碼實(shí)例解析
- Java模擬實(shí)現(xiàn)斗地主發(fā)牌
相關(guān)文章
SpringBoot如何配置獲取request中body的json格式參數(shù)
這篇文章主要介紹了SpringBoot如何配置獲取request中body的json格式參數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06Java 中使用數(shù)組存儲(chǔ)和操作數(shù)據(jù)
本文將介紹Java中常用的數(shù)組操作方法,通過詳細(xì)的示例和解釋,幫助讀者全面理解和掌握這些方法,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09Spring Boot簡(jiǎn)單實(shí)現(xiàn)快速搭建圖解
這篇文章主要介紹了Spring Boot簡(jiǎn)單實(shí)現(xiàn)快速搭建圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11詳解springcloud之服務(wù)注冊(cè)與發(fā)現(xiàn)
本次分享的是關(guān)于springcloud服務(wù)注冊(cè)與發(fā)現(xiàn)的內(nèi)容,將通過分別搭建服務(wù)中心,服務(wù)注冊(cè),服務(wù)發(fā)現(xiàn)來說明,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-06-06Mybatis中通過generator生成mapper、Dao、mapper.xml的方法
這篇文章主要介紹了Mybatis中通過generator生成mapper、Dao、mapper.xml的方法,需要的朋友可以參考下2017-01-01詳解Kotlin和anko融合進(jìn)行Android開發(fā)
本篇文章主要介紹了Kotlin和anko融合進(jìn)行Android開發(fā),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11