斗地主案例實作步驟
分析:
首先來梳理一下規則:
(1)準備牌階段:斗地主總共54張牌,大王小王各一張(特殊對待),其他52張牌,分別4種花色,每種花色13張,四種花色分別為? ? ? ?(陣列1);每一種花色中的13張牌(由大到小)2 A K Q J 10 9 8 7 6 5 4 3(陣列2),定義一個集合/陣列進行存盤,遍歷這兩個集合,可以組裝成52張牌;如:? 7,? 8等;
(2)洗牌階段:使用集合工具類Collections方法,其中static void shuffle(List<?> list)方法對牌進行隨機打亂,
(3)發牌階段:要求每一位玩家擁有17張牌,剩余三張作為底牌,一人一張輪流發牌:集合的索引(0-53)%3,定義4個集合,來存盤3個玩家的牌和場上的底牌,索引%3,有三個值(0,1,2),0%3=0,1%3=1,2%3=2,3%3=0,就可以給三名玩家發牌了,當索引>=51時,改為發底牌.
(4)看牌階段:直接列印集合/陣列
實作:
package doudizhu;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
public class DouDiZhu {
public static void main(String[] args) {
//1.準備牌
//定義一個存盤54張牌的ArrayList集合,泛型使用字串
ArrayList<String> poker = new ArrayList<>();
//定義兩個陣列,一個陣列存盤花色,一個陣列儲存牌號
String[] colors = {"?", "?", "?", "?"};//花色陣列
String[] numbers = {"2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3"};//牌號陣列
//先把大王小王(特殊對待)存盤到poker集合中
poker.add("大王");
poker.add("小王");
//回圈嵌套遍歷兩個陣列,組裝52張牌,花色和牌號
for (String number : numbers) {
for (String color : colors) {
//把組裝好的牌存盤到poker集合中
poker.add(color + number);
}
}
//2.洗牌,隨機洗
Collections.shuffle(poker);
//3.發牌
//定義四個集合,存盤三個玩家牌和底牌
ArrayList<String> player01 = new ArrayList<>();
ArrayList<String> player02 = new ArrayList<>();
ArrayList<String> player03 = new ArrayList<>();
ArrayList<String> diPai = new ArrayList<>();
for (int i = 0; i < poker.size(); i++) {
//獲取每一張牌
String p = poker.get(i);
//輪流發牌
if (i >= 51) {
diPai.add(p); //索引大于等于51時給底牌留3張
} else if (i % 3 == 0) {
player01.add(p); //給第一名玩家發牌
} else if (i % 3 == 1) {
player02.add(p); //給第二名玩家發牌
} else if (i % 3 == 2) {
player03.add(p); //給第三名玩家發牌
}
}
//看牌
System.out.println("玩家1" + player01);
System.out.println("玩家2" + player02);
System.out.println("玩家3" + player03);
System.out.println("底牌" + diPai);
}
}
結果:
玩家1[?Q, ?7, 小王, ?10, ?K, ?A, ?6, ?2, ?5, ?8, ?9, ?J, ?5, ?5, ?4, ?3, ?4]
玩家2[?3, ?8, ?3, ?J, ?4, ?J, ?2, ?Q, ?Q, ?A, ?9, ?6, ?2, ?A, 大王, ?10, ?Q]
玩家3[?J, ?3, ?7, ?7, ?K, ?2, ?K, ?6, ?4, ?9, ?8, ?K, ?6, ?A, ?5, ?10, ?8]
底牌[?7, ?9, ?10]
感謝您的閱讀,不足之處歡迎指正!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/258097.html
標籤:其他
上一篇:【C語言】貪吃蛇小游戲代碼詳解
下一篇:python抽卡人生游戲
