1.准备牌:54张牌,存储到一个集合中
·特殊牌: 大王 小王
·普通牌:52张
定义一个数组/集合,存储4种花色:♥(红桃♦(方片) ♠(黑桃)♣(梅花)
定义一个数组/集合,存储13个序号:1-2-…-k
·循环嵌套遍历两个数组/集合,组装52张牌
♣2 ♠3 ♥A ♦9….
2.洗牌:使用集合工具Collections的方法
static void shuffle(list<?> list) 使用指定的随机源对指定列表进行置换
会随机的打乱集合中元素的顺序
3.发牌:要求;1人17张牌,最后三张作为底牌,一人一张轮流发牌=集合的索引(0-53)%3
定义4个集合,存储3个玩家的牌和底牌
索引%3,有三个值(0,1,2)代表三个玩家
索引》=51改为发给底牌
4.看牌:直接打印集合/遍历存储玩家和底牌的集合
package Day12.test;
import java.util.ArrayList;
import java.util.Collections;
/*斗地主综合分析
* 1,准备牌 2.洗牌 3.发牌 4.看牌*/
public class DouDiZhu {
public static void main(String[] args) {
//1.准备牌(定义一个存储54张牌的ArrayList集合,泛型使用String
ArrayList<String> pai = new ArrayList<>();
//定义两个数组,一个数组存储花色,一个数组存储数字
String[] colors = {"♠", "♣", "♦", "♥"};
String[] numbers = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
//先把大王和小王存储起来
pai.add("大王");
pai.add("小王");
//循环嵌套遍历两个数组,组装52张牌
for (String number : numbers) {
for (String color : colors) {
//System.out.println(color+number); 查看一下是否正确
//把组装好的牌放到pai中
pai.add(color + number);
}
}
//System.out.println(pai);
//洗牌:使用集合的工具类Collections中的方法
//static void shuffle(list<?> list) 使用默认的随机源对指定列表进行置换
Collections.shuffle(pai);
//System.out.println(pai);
//发牌:定义四个集合存储玩家的牌和底牌
ArrayList<String> player1=new ArrayList<>();
ArrayList<String> player2=new ArrayList<>();
ArrayList<String> player3=new ArrayList<>();
ArrayList<String> dipai=new ArrayList<>();
//遍历pai集合,获取每一张牌,使用 pai集合的索引%3给3个玩家轮流发牌
//剩余pai给底牌(底牌要进行判断是否是底牌(i>=51),否则牌就发没了
for(int i=0;i<pai.size();i++){
//获取每一张牌
String p=pai.get(i);
//轮流发牌
if(i>=51){
//给底牌发牌
dipai.add(p);
}else if(i%3==0){
player1.add(p);//玩家1发牌
}else if(i%3==1){
player2.add(p);//玩家2发牌
}else if(i%3==2){
player3.add(p);//玩家3发牌
}
}
//4.看牌
System.out.println("贾*荣:"+player1);
System.out.println("冯*秋:"+player2);
System.out.println("姜*航:"+player3);
System.out.println("底牌:"+dipai);
}
}
运行结果