斗地主小游戏

本文介绍了如何使用Java实现一个模拟扑克牌游戏的过程,包括创建牌组、洗牌和分配给三位玩家。通过ArrayList和随机数生成,展示了如何使用Collections.shuffle对54张牌进行随机排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package mydemo.day2.demo03;

import java.util.*;

public class Demo03CasePractice {
public static void main(String[] args) {
//用两个数组跟集合结合生张牌的一个大集合成
ArrayList list = new ArrayList<>();
String[] arr1 = {“♠”, “♥”, “♣”, “♦”};
String[] arr2 = {“2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “10”, “J”, “Q”, “K”, “A”};
for (int m = 0; m < arr1.length; m++) {
for (int n = 0; n < arr2.length; n++) {
list.add(arr1[m] + arr2[n]);
}
}
list.add(“Big🃏”);
list.add(“Small🃏”);
//调用洗牌方法,将54张牌洗好
//可以调用Collections的工具类shuffle
// Collections.shuffle(list);
//遍历洗好牌的集合
ArrayList shuffleList = shuffleMethod(list);
Iterator it = shuffleList.iterator();
System.out.println(“洗好的牌:”);
while (it.hasNext()) {
String st = it.next();
System.out.println(st);
}
System.out.println();
//调用摸牌的方法
method(shuffleList);
}

//洗牌的方法可以调用集合的工具类shuffle
//定义洗牌的方法
public static ArrayList shuffleMethod(ArrayList<String> list1) {
    //创建一个新的集合用于存放洗好后的牌
    ArrayList<String> receiveList = new ArrayList<>();
    //获取集合长度,获得循环次数
    int n = list1.size();
    for (int i = 0; i < n; i++) {
        //随机生成54张牌的索引编号,并将索引值对应的牌放进新的集合中
        String str = list1.remove(new Random().nextInt(list1.size()));
        receiveList.add(str);
    }
    return receiveList;
}

//定义一个摸牌的方法
public static void method(ArrayList<String> list) {
    //定义四个集合分别存放三个人的牌和剩下的地主牌
    ArrayList<String> listA = new ArrayList<>();
    ArrayList<String> listB = new ArrayList<>();
    ArrayList<String> listC = new ArrayList<>();
    ArrayList<String> listLeft = new ArrayList<>();
    //先将地主牌在集合中取出来并删除对应的牌,剩下51张牌摸牌
    for (int i = 0; i < 3; i++) {
        String str = list.remove(new Random().nextInt(list.size()));
        listLeft.add(str);
    }
    //也可以先摸牌后确定地主牌
    /*for (int i = 0; i < list.size(); i++) {
        if (i < 51) {
            if (i % 3 == 0) {
                listA.add(list.get(i));
            } else if (i % 3 == 1) {
                listB.add(list.get(i));
            } else if (i % 3 == 2) {
                listC.add(list.get(i));
            }
        } else {
            listLeft.add(list.get(i));
        }
    }*/

    //三个人摸牌
    for (int i = 0; i < list.size()/*此处的list.size()==51*/; i++) {
        if (i % 3 == 0) {
            listA.add(list.get(i));
        } else if (i % 3 == 1) {
            listB.add(list.get(i));
        } else {
            listC.add(list.get(i));
        }
    }
    System.out.println("第一个人的牌:" + listA);
    System.out.println("第二个人的牌:" + listB);
    System.out.println("第三个人的牌:" + listC);
    System.out.println("地主牌:" + listLeft);
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值