模拟斗地主发牌洗牌和看牌

如何使用Collections方法等去模拟斗地主的发牌洗牌和看牌操作。

思路:

创建一个动态数组当牌盒,创建花色数组和点数数组并将他们拼接放入牌盒。调用Collections工具类的shuffle方法对牌盒进行洗牌。创建三个玩家动态数组和一个底牌动态数组。遍历将牌盒里的牌发给玩家并且牌盒里的其中三张牌作为底牌,最后遍历所有玩家的牌和底牌。

1.首先创建一个牌盒,后续用于存储扑克牌。

//创建牌盒
List<String> cardBox = new ArrayList<String>();

2.创建两个数组,方便后续进行拼接进入牌盒。

//创建花色数组和点数数组
String[] colors = {"红桃","梅花","红心","方块"};
String[] numbers = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};

3.接着使用增强for将两个数组进行拼接进入牌盒。(不要忘记大小王)

//遍历将花色数组和
for(String color : colors)
{
    for(String number : numbers)
    {
        cardBox.add(color + number);
    }
}

cardBox.add("小王");
cardBox.add("大王");

4.创建三个玩家动态数组和底牌动态数组

//创建三个玩家list
ArrayList<String> aArray = new ArrayList<>();
ArrayList<String> bArray = new ArrayList<>();
ArrayList<String> cArray = new ArrayList<>();
//创建一个底牌list
ArrayList<String> dpArray = new ArrayList<>();

5.接着调用Collections的shuffle方法进行洗牌操作

//调用Collections的shuffle的方法执行洗牌操作
Collections.shuffle(cardBox);

6.(重点)遍历将牌发给玩家,并取出三张牌放入底牌list。

//遍历将牌一张一张发给三个玩家
for (int i = 0; i < cardBox.size(); i++) {
    String poker = cardBox.get(i);  //此处将一张牌放入底牌
    if (i >= cardBox.size() - 3) {  //如果i已经到了最后三张,则将牌加进底牌list中
        dpArray.add(poker);
    } else if (i % 3 == 0) {    //3为玩家数量
        aArray.add(poker);
    } else if (i % 3 == 1) {
        bArray.add(poker);
    } else if (i % 3 == 2) {
        cArray.add(poker);
    }
}

7.最后遍历所有玩家自己的牌以及三张底牌。

//遍历每个玩家自己的所有牌
System.out.println("----玩家1牌----");
Collections.sort(aArray);
for (String i : aArray) {
    System.out.print(" " + i);
}

Collections.sort(bArray);
System.out.println("\n----玩家2牌----");
for (String i : bArray) {
    System.out.print(" " + i);
}

Collections.sort(cArray);
System.out.println("\n----玩家3牌----");
for (String i : cArray) {
    System.out.print(" " + i);
}

//遍历所有底牌
Collections.sort(dpArray);
System.out.println("\n----底牌----");
for (String i : dpArray) {
    System.out.print(" " + i);
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值