集合经典案例--斗地主

题目要求:模拟斗地主的游戏给三个玩家发牌
题目理解:扑克牌一共是54张牌,包含两张大王和小王.剩余52张牌是2~10 .J . Q . K . A四种不同花色"梅花,方片,黑桃,红桃"

所以需要几个集合(整副牌的集合poker,花色的集合color,点数的集合number,三个玩家相应的集合)
具体代码如下:

import java.util.ArrayList;
import java.util.Collections;
public class PlayGames {
    public static void main(String[] args) {
        ArrayList<String> color = new ArrayList<>(); //新建一个花色集合
        color.add("♥");  //添加花色
        color.add("♠");
        color.add("♦");
        color.add("♣");
        ArrayList<String> numbers = new ArrayList<>(); //新建点数集合
        numbers.add("J");  //添加非数字的点数
        numbers.add("Q");
        numbers.add("K");
        numbers.add("A");
        for (int i = 2; i <= 10; i++) {  //遍历添加数字点数
            numbers.add(String.valueOf(i) + "");  //+"" 将转换成字符串类型}
        }
        //遍历查看集合内容是否添加成功
        for (String number : numbers) {
            System.out.print(number+" ");
        }
        System.out.println();
        //新建扑克牌集合
        ArrayList<String> poker = new ArrayList<>();
        //将不同花色的扑克牌添加到集合中
        for (String ss : color) {
            for (String number : numbers) {
                String pok = number+ss;
                poker.add(pok);
            }
        }
        //将大王小王添加到牌的集合中
        poker.add("大鬼");
        poker.add("小鬼");

        //查看是否添加扑克牌成功
        for(String s : poker) {
            System.out.print(s+" ");
        }
        System.out.println();
        System.out.println("扑克牌的张数是:"+poker.size());

        //洗牌操作 使用shuffer方法  属于 Collections工具类,打乱集合中元素顺序
        Collections.shuffle(poker);
        System.out.println(poker);

        //发牌操作
        //创建三个玩家各自占一个集合  按照斗地主游戏规则 会留三张底牌--单独使用一个集合
        ArrayList<String> player1 = new ArrayList<>();
        ArrayList<String> player2 = new ArrayList<>();
        ArrayList<String> player3 = new ArrayList<>();    //玩家对应集合
        ArrayList<String> dipai   = new ArrayList<>();  //底牌集合
        //将底牌个数添加到底牌集合中
        dipai.add(poker.get(51));
        dipai.add(poker.get(52));
        dipai.add(poker.get(53));
        //分别给三个玩家发牌    ,根据索引进行发牌
        for (int i = 0; i < poker.size(); i++) {
            if (i % 3 == 0){                    //由玩家1的和对应索引关系得出如何获得牌数
                player1.add(poker.get(i));
            }
            else if (i % 3 == 1){                //玩家2
                player2.add(poker.get(i));
            }
            else  (i % 3 == 2){                  //玩家3
                player3.add(poker.get(i));
                       }
        }
        System.out.println("玩家1的牌: "+player1);
        System.out.println("玩家2的牌: "+player2);
        System.out.println("玩家3的牌: "+player3);

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值