日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

按照斗地主的规则,完成洗牌发牌的动作

發布時間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 按照斗地主的规则,完成洗牌发牌的动作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.案例介紹

? ?按照斗地主的規則,完成洗牌發牌的動作。

? ?具體規則:

? ? 1. 組裝54張撲克牌將

? ? 2. 54張牌順序打亂

? ? 3. 三個玩家參與游戲,三人交替摸牌,每人17張牌,最后三張留作底牌。

? ? 4. 查看三人? ? ? ? ? 各自手中的牌(按照牌的大小排序)、底牌 規則:手中撲克牌從大到小的擺放順序:大王,小王,2,A,K,Q,J,10,9,8,7,6,5,4,3?

2.案例分析?

1. 準備牌: 完成編號與紙牌的映射關系: 使用雙列Map(HashMap)集合,完成一個編號與字符串紙牌的對應關系(相當于一個字典)。

2. 洗牌: 通過編號完成洗牌發牌

3. 發牌: 將每個人以及底牌設計為ArrayList,將最后3張牌直接存放于底牌,剩余牌通過對3取模依次發牌。 存放的過程中要求數字大小與斗地主規則的大小對應。 將代表不同紙牌的編號分配給不同的玩家與底牌。

4. 看牌: 通過查詢紙牌與編號的對應關系,由編號轉成紙牌字符串再進行展示。

3.代碼編寫?

package day10;import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Set;/*按照斗地主的規則,完成洗牌發牌的動作。 具體規則: 1. 組裝54張撲克牌將 2. 54張牌順序打亂 3. 三個玩家參與游戲,三人交替摸牌,每人17張牌,最后三張留作底牌。 4. 查看三人各自手中的牌(按照牌的大小排序)、底牌 規則:手中撲克牌從大到小的擺放順序:大王,小王,2,A,K,Q,J,10,9,8,7,6,5,4,3*/ public class PokerDemo {public static void main(String[] args) {// 1.使用雙列Map(HashMap)集合,完成一個編號與字符串紙牌的對應關系(相當于一個字典)Map<Integer, String> pokerMap = new HashMap<Integer, String>();// 花色集合ArrayList<String> colors = new ArrayList<String>();// 數字集合ArrayList<String> numbers = new ArrayList<String>();// 2.將撲克牌中的花色和數字添加到各自的集合中Collections.addAll(colors, "?", "?", "?", "?");Collections.addAll(numbers, "2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3");int count = 1;pokerMap.put(count++, "大王");pokerMap.put(count++, "大王");// 每張牌由花色數字兩部分組成,我們可以使用花色集合與數字集合嵌套迭代完成每張牌的組裝。for (String number : numbers) {for (String color : colors) {String card = color + number;pokerMap.put(count++, card);}}// System.out.println(pokerMap);// 3.洗牌Set<Integer> set = pokerMap.keySet();ArrayList<Integer> list = new ArrayList();list.addAll(set);// 將list里撲克牌打亂Collections.shuffle(list);// 5.發牌// 創建三個list集合(相當于三個玩家),發牌時 先將撲克牌對應的編號,放到三個list集合里ArrayList<Integer> list1 = new ArrayList<>();ArrayList<Integer> list2 = new ArrayList<>();ArrayList<Integer> list3 = new ArrayList<>();ArrayList<Integer> dipai = new ArrayList<>();for (int i = 0; i < list.size(); i++) {Integer num = list.get(i);if (num >= 51) {dipai.add(num);} else if (num % 3 == 0) {list1.add(num);} else if (num % 3 == 1) {list2.add(num);} else {list3.add(num);}}// 6.對撲克牌編號進行排序Collections.sort(list1);Collections.sort(list2);Collections.sort(list3);//System.out.println(list1);// 7.創建三個玩家,從map集合通過編號拿出對應的牌面,放到各自list集合里ArrayList<String> player1 = new ArrayList<>();ArrayList<String> player2 = new ArrayList<>();ArrayList<String> player3 = new ArrayList<>();ArrayList<String> dipai1 = new ArrayList<>();for (Integer i : list1) {player1.add(pokerMap.get(i));}for (Integer i : list2) {player2.add(pokerMap.get(i));}for (Integer i : list3) {player3.add(pokerMap.get(i));}System.out.println("玩家1" + player1);System.out.println("玩家2" + player2);System.out.println("玩家3" + player3);} }

? ? ??

總結

以上是生活随笔為你收集整理的按照斗地主的规则,完成洗牌发牌的动作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。