Day05_02目标:斗地主游戏的案例开发

目标:斗地主游戏的案例开发

业务需求分析:

​ 斗地主的做牌,洗牌,发牌。
​ 业务:总共有54张牌。
​ 点数: “3”,“4”,“5”,“6”,“7”,“8”,“9”,“10”,“J”,“Q”,“K”,“A”,“2”
​ 花色: “♠”, “♥”, “♣”, “♦”
​ 大小王: “?” , “?”
​ 点数分别要组合4种花色,大小王各一张。

斗地主:发出51张牌,剩下3张作为底牌。

功能:

​ 1.做牌。
​ 2.洗牌
​ 3.定义3个玩家。
​ 4.发牌。
​ 5.看牌。

public class GameDemo {
    // a.定义一个集合存储做好的54张牌:♠3 ,♠4。
    public static List<Card> cards = new ArrayList<>();
    static {
        /** 1.做牌。54张牌做好放到cards集合中去 */
        // 定义点数:类型确定了,个数确定了。应该用数组
        String[] sizes = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
        // 定义花色:类型确定了,个数确定了。应该用数组
        String[] colors = {"♠", "♥", "♣", "♦"};
        // 先遍历点数,再遍历花色组合牌对象
        for(String size : sizes){
            for(String color : colors){
                // 创建一个牌对象
                Card card = new Card(size , color);
                // 把这张牌放到集合中存储起来
                cards.add(card);
            }
        }
        // 单独创建大小王对象 :"?" , "?"
        cards.add(new Card("","?" ));
        cards.add(new Card("","?" ));
        System.out.println("新牌:"+cards);
    }

    public static void main(String[] args) {
        /** 2.洗牌:就是把牌的顺序打乱 */
        // public static void shuffle(List<?> list) :打乱List集合的顺序。
        Collections.shuffle(cards);
        System.out.println("洗牌后:"+cards);

        /** 3.定义3个玩家。*/
        List<Card> linghuChong = new ArrayList<>();
        List<Card> renYingYing = new ArrayList<>();
        List<Card> dongFangBuBai = new ArrayList<>();

        /** 4.发牌:把洗后的牌依次发出51张出去,剩余三张作为底牌 */
        // cards = [♥3, ♠8, ♦8, ♠K, ♦7, ♥6, ♣6, ♣9, ♦4,....
        //    i     0    1   2   3   4   5   6  7   8   % 3
        for(int i = 0 ; i < cards.size() - 3 ; i++ ){
            Card c = cards.get(i);
            if(i % 3 == 0 ) {
                // 请令狐冲接牌
                linghuChong.add(c);
            }else if( i % 3 == 1){
                // 请盈盈接牌
                renYingYing.add(c);
            }else if(i % 3 == 2){
                // 请东方不败接牌
                dongFangBuBai.add(c);
            }
        }

        /** 5.看牌。*/
        System.out.println("冲冲:"+linghuChong);
        System.out.println("盈盈:"+renYingYing);
        System.out.println("东方:"+dongFangBuBai);
        // System.out.println("底牌:"+cards.get(53)+"->"+cards.get(52)+"->"+cards.get(51));

        // 拓展:截取最后三张底牌!
        List<Card> lastThreeCards = cards.subList(cards.size()-3 , cards.size());
        System.out.println("底牌:"+lastThreeCards);
    }
}
public class Card {
    // 点数
    private String size;
    // 花色
    private String color;

    public Card() {

    }

    public Card(String size, String color) {
        this.size = size;
        this.color = color;
    }

    public String getSize() {
        return size;
    }

    public void setSize(String size) {
        this.size = size;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    @Override
    public String toString() {
        return color+size;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值