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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

1.17 项目实例:模仿斗地主洗牌发牌小游戏

發布時間:2025/3/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1.17 项目实例:模仿斗地主洗牌发牌小游戏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實現思路步驟如下:

  • 準備牌:Arrylist 集合儲存,for 循環遍歷實現
  • 洗牌:使用 Collections 的shuffle(arryBox);方法刷新集合中的順序
  • 發牌:使用 for 循環遍歷 Arrylist 中的 51 張牌,然后用索引值對 3 取余,余數為 0,1,2 然后來隨機分配牌。
  • 看牌:直接輸出集合
  • public class Main {public static void main(String[] args) {// 1. 準備牌String[] arr1 = { "黑桃", "紅桃", "方片", "梅花" };String[] arr2 = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };List<String> arryBox = new ArrayList<>();for (int i = 0; i < arr1.length; i++) {for (int j = 0; j < arr2.length; j++) {arryBox.add(arr1[i] + arr2[j]);}}arryBox.add("大王");arryBox.add("小王");// 3個人斗地主,分別為 zhangsan、lisi、wangwuList<String> zhangsan = new ArrayList<>();List<String> lisi = new ArrayList<>();List<String> wangwu = new ArrayList<>();// 2. 洗牌Collections.shuffle(arryBox);// 3. 發牌for (int i = 0; i < arryBox.size() - 3; i++) {if (i % 3 == 0) {zhangsan.add(arryBox.get(i));} else if (i % 3 == 1) {lisi.add(arryBox.get(i));} else if (i % 3 == 2) {wangwu.add(arryBox.get(i));}}// 4. 看牌pushBoss();System.out.println("張三:" + zhangsan);System.out.println("李四:" + lisi);System.out.println("王五:" + wangwu);System.out.print("底牌:[");for (int i = 1; i < 4; i++) {System.out.print(arryBox.get(arryBox.size() - i));if (i < 3) {System.out.print(",");}}System.out.print("]");}/** 隨機地主 */public static void pushBoss() {List<String> players = new ArrayList<String>();players.add("張三");players.add("李四");players.add("王五");Random r = new Random();int bossIndex = r.nextInt(3);//nextInt(3)該方法的作用是生成一個隨機的int值,該值介于[0,n)的區間,也就是0到n之間的隨機int值,包含0而不包含n。String boss = players.get(bossIndex);System.out.println("此局地主是:" + boss);} }

    運行上面程序,輸出結果為:

    此局地主是:李四 張三: [梅花10, 方片2, 方片K, 方片J, 方片5, 黑桃6, 黑桃10, 紅桃3, 梅花3, 黑桃2, 梅花8, 黑桃A, 紅桃J, 梅花9, 紅桃K, 方片9, 梅花Q] 李四: [紅桃4, 黑桃8, 方片8, 方片3, 紅桃2, 紅桃6, 紅桃5, 黑桃3, 黑桃4, 梅花7, 方片Q, 小王, 紅桃8, 黑桃K, 方片6, 梅花A, 黑桃7] 王五: [方片4, 梅花4, 方片7, 黑桃5, 黑桃9, 紅桃10, 梅花K, 方片A, 紅桃Q, 黑桃J, 梅花2, 大王, 方片10, 紅桃A, 梅花J, 梅花5, 紅桃7] 底牌:[梅花6,紅桃9,黑桃Q]

    可通過 Map 集合將三名玩家的牌按大小排序,實現代碼如下:

    public class Main2 {public static void main(String[] args) {// 1.準備牌String[] arr1 = { "黑桃", "紅桃", "方片", "梅花" };String[] arr2 = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };// 定義Map集合用來存放索引和牌HashMap<Integer, String> pokerMap = new HashMap<>();// 定義List集合存儲索引(索引為0-53)List<Integer> indexList = new ArrayList<>();// 定義索引值變量int index = 0;// 將撲克牌與索引建立對應關系放入Map和List集合中for (String num : arr2) {for (String color : arr1) {pokerMap.put(index, color + num);indexList.add(index);index++;}}pokerMap.put(index, "小王");indexList.add(index++);pokerMap.put(index, "大王");indexList.add(index);// 定義玩家TreeSet<Integer> zhangsan = new TreeSet<>();TreeSet<Integer> lisi = new TreeSet<>();TreeSet<Integer> wangwu = new TreeSet<>();TreeSet<Integer> buttoms = new TreeSet<>();// 2. 洗牌Collections.shuffle(indexList);// 3. 發牌for (int i = 0; i < indexList.size(); i++) {if (i >= indexList.size() - 3) {buttoms.add(indexList.get(i));} else if (i % 3 == 0) {zhangsan.add(indexList.get(i));} else if (i % 3 == 1) {lisi.add(indexList.get(i));} else {wangwu.add(indexList.get(i));}}// 4. 看牌pushBoss();check(pokerMap, zhangsan, "張三");check(pokerMap, lisi, "李四");check(pokerMap, wangwu, "王五");check(pokerMap, buttoms, "底牌");}/*** 看牌** @param pokerMap* @param player 玩家撲克牌對應索引集合* @param name 玩家昵稱*/public static void check(HashMap<Integer, String> pokerMap, TreeSet<Integer> player, String name) {// 查看手中的牌System.out.print(name + ":[");for (Integer i : player) {System.out.print(pokerMap.get(i) + " ");}System.out.println("]");}/** 隨機地主 */public static void pushBoss() {List<String> players = new ArrayList<String>();players.add("張三");players.add("李四");players.add("王五");Random r = new Random();int bossIndex = r.nextInt(3);String boss = players.get(bossIndex);System.out.println("此局地主是:" + boss);} }

    運行上面程序,輸出結果為:

    此局地主是:張三 張三:[方片A 紅桃2 方片2 黑桃4 紅桃4 梅花4 紅桃6 方片6 梅花6 黑桃7 紅桃8 黑桃9 黑桃10 方片J 方片Q 黑桃K 紅桃K ] 李四:[梅花2 黑桃3 紅桃3 方片3 梅花3 紅桃5 方片5 紅桃7 梅花8 紅桃9 梅花9 紅桃10 梅花10 黑桃Q 梅花Q 梅花K 小王 ] 王五:[黑桃A 紅桃A 黑桃2 方片4 黑桃5 黑桃6 方片7 黑桃8 方片8 方片9 方片10 黑桃J 紅桃J 梅花J 紅桃Q 方片K 大王 ] 底牌:[梅花A 梅花5 梅花7 ]

    總結

    以上是生活随笔為你收集整理的1.17 项目实例:模仿斗地主洗牌发牌小游戏的全部內容,希望文章能夠幫你解決所遇到的問題。

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