斗地主的一般步骤:
- 准备牌
- 洗牌
- 发牌
- 看牌
玩家:玩家list1,玩家list2,玩家list3,底牌;
案例演示
public class DemoDouDiZhu {
public static void main(String[] args) {
//1.准备牌
//定义一个存储54张牌的ArrayList集合,泛型使用String
ArrayList<String> list=new ArrayList<>();
//定义两个集合,一个数组存储牌的花色,一个数组存储牌的序号
String [] color={"♠","♣","♥","♦"};
String[] numbers={"2","A","K","Q","3","10","9","8","7","6","5","4","J"};
//先把大小王存储到list集合中
list.add("大王");
list.add("小王");
//循环嵌套两个数组,组装
for (String number : numbers) {
for (String s : color) {
//把组装好的牌存list集合中好
list.add(s+number);
}
}
// System.out.println(list);
//洗牌,使用Collections集合中的Shuffle(List<?>list) 使用默认随机源对指定列表进行置换
Collections.shuffle(list);
System.out.println(list);
//发牌
//定义四个集合,存储玩家的牌和底牌
ArrayList<String> list1=new ArrayList<>();
ArrayList<String> list2=new ArrayList<>();
ArrayList<String> list3=new ArrayList<>();
ArrayList<String> DiPai=new ArrayList<>();
//使用if--if else--else条件判断分发给哪位玩家,
//先判断底牌(i>=51),否则牌就发完了
for (int i = 0;i < list.size(); i++) {
//获取每一张牌
String RandomNumber = list.get(i);
//轮流发牌
if (i>=51){
//给底牌发牌
DiPai.add(RandomNumber);
}else if (i%3==0){
//给玩家List1发牌
list1.add(RandomNumber);
}else if (i%3==1){
//给玩家List2发牌
list2.add(RandomNumber);
}else
{
//给玩家List3发牌
list3.add(RandomNumber);
}
}
System.out.println("--------------------------------------分割线");
//4.看牌
System.out.println("玩家list1:"+list1);
System.out.println("玩家list2:"+list2);
System.out.println("玩家list3:"+list3);
System.out.println("底牌:"+DiPai);
}
}
演示结果:
玩家list1:[♠10, ♠J, ♥6, ♠4, ♣Q, ♠9, ♣7, ♦6, ♦2, ♠7, ♦8, ♦K, ♥3, ♥7, ♦9, ♥2, ♦5]
玩家list2:[♣3, ♣8, ♦Q, ♥A, ♦10, ♥10, ♠Q, ♠6, ♣A, ♦J, ♣6, ♠3, ♣5, ♠A, ♠K, 小王, 大王]
玩家list3:[♦7, ♠5, ♥Q, ♥8, ♦4, ♣9, ♥5, ♥9, ♣J, ♣4, ♥J, ♠2, ♦A, ♣2, ♦3, ♣10, ♣K]
底牌:[♥4, ♥K, ♠8]