按照斗地主的规则,完成洗牌发牌的动作。 具体规则:使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌

public class Poker implements Comparable<Poker>{
    /*每张牌包含花色和数字两个属性*/
    private String colour;
    private String figure;
    //id
    private int id;

  
    @Override
    public int compareTo(Poker o) {
        return this.id - o.id;
    }
    public Poker() {
    }

    public Poker(String colour, String figure, int id) {
        this.colour = colour;
        this.figure = figure;
        this.id = id;
    }

    /**
     * 获取
     * @return colour
     */
    public String getColour() {
        return colour;
    }

    /**
     * 设置
     * @param colour
     */
    public void setColour(String colour) {
        this.colour = colour;
    }

    /**
     * 获取
     * @return figure
     */
    public String getFigure() {
        return figure;
    }

    /**
     * 设置
     * @param figure
     */
    public void setFigure(String figure) {
        this.figure = figure;
    }

    /**
     * 获取
     * @return id
     */
    public int getId() {
        return id;
    }

    /**
     * 设置
     * @param id
     */
    public void setId(int id) {
        this.id = id;
    }

    public String toString() {
        return colour + figure;
    }
}

上面的是创建一个Poker的类 私有化成员变量

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Room {
        public void poker (){
            List<Poker> list = new ArrayList<>();
            String[] numbers = new String[]{"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};
            String[] colors = new String[]{"♠", "♥", "♣", "♦"};
            list.add(new Poker("大王", "", 0));
            list.add(new Poker("小王", "", 1));
            // id从2开始 因为0 1 分别给大小王
            int id = 2;
            // 利用增强for 循环嵌套 外部循环numbers一次 内部循环color花色循环一轮
            // 使数字呈现 ♠3, ♥3, ♣3, ♦3, ♠4, ♥4, ♣4, ♦4,这样的格式
            for (String number : numbers) {
                for (String color : colors) {
                    // id代表着这个数的编号 可以理解为数组的索引 就算洗牌洗乱了 这个编号还是一样的
                    Poker poker = new Poker(color, number, id);
                    list.add(poker);
                    id++;
                }
            }
            System.out.println(list);
            // 洗牌 运用Collections.shuffle 打乱顺序
            Collections.shuffle(list);
            System.out.println("洗牌后:" + list);
            // 发牌
            ArrayList<Poker> player01 = new ArrayList<>();
            ArrayList<Poker> player02 = new ArrayList<>();
            ArrayList<Poker> player03 = new ArrayList<>();
            ArrayList<Poker> dipai = new ArrayList<>();
            for (int i = 0; i < list.size(); i++) {
                Poker poker = list.get(i);
                // 判断i要是大于或者等于的时候 这时候代表是最后的三张牌 作为地主牌 如果你想要首三张 同理
                if (i >= 51) {
                    dipai.add(poker);

                    // 对i磨3 如果磨3的数等于0 那就发给1号玩家
                } else if (i % 3 == 0) {
                    player01.add(poker);

                    // 对i磨3 如果磨3的数等于1 那就发给1号玩家
                } else if (i % 3 == 1) {
                    player02.add(poker);

                    // 对i磨3 如果磨3的数等于2 那就发给1号玩家
                } else if (i % 3 == 2) {
                    player03.add(poker);
                }
            }
            // 给玩家手上的牌 排序
            Collections.sort(player01);
            Collections.sort(player02);
            Collections.sort(player03);
            // 看牌
            System.out.println("玩家1的牌: " + player01);
            System.out.println("玩家2的牌: " + player02);
            System.out.println("玩家3的牌: " + player03);
            System.out.println("地主牌: " + dipai);
        }
    }
  • 11
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值