用Java集合实现斗地主案例

近来无事,打算重学Java SE 学到了集合,照着网上做了一个斗地主实例,直接上代码,各位看官请欣赏:

package cn.gather;

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

/**
 * 斗地主案例
 * 1.准备牌
 * 2.洗牌
 * 3.发牌
 * 4.看牌
 */
public class DouDiZhu {
    
    
    public static void main(String[] args ){
    
    
        /**
         * 1.准备牌
         */
        //定义一个可以存储54张牌的ArrayList的集合,集合泛型是String
        ArrayList<String> poker = new ArrayList<>();
        //定义两个数组。一个存储花色,一个存储数字
        String[] colors ={
    
    "♥","♠","♣","♦"};
        String[] numbers = {
    
    "2","A","K","Q","J","10","9","8","7","6","5","4","3"};
        //先将两个大王和小王存储到集合poker当中
        poker.add("大王");
        poker.add("小王");
        //将花色数组和数字数组组合成52张牌
        for (String color:colors) {
    
    
            for (String number:numbers) {
    
    
                poker.add(color+number);
            }
        }
        //System.out.println(poker);

        /**
         * 2.洗牌
         * 使用集合工具类Collection中的方法
         * static void shuffle(list<?> list)使用默认的方法进行乱序存放
         */
        Collections.shuffle(poker);
        //System.out.println(poker);

        /**
         * 3.发牌
         */
        //定义四个集合,分别是存放三个人的牌和底牌
        ArrayList<String> player01 = new ArrayList<>();
        ArrayList<String> player02 = new ArrayList<>();
        ArrayList<String> player03 = new ArrayList<>();
        ArrayList<String> dipai = new ArrayList<>();
        /**
         * 遍历集合获取每一张牌
         * 然后根据i模除3等于多少发到对应人的手里
         * 如果i>=51,则把最后三张发给底牌,因为是从0开始的所以是51而不是52,一共是到53
         */
        for (int i = 0; i < poker.size(); i++) {
    
    
            String s = poker.get(i);
            if (i>=51){
    
    
                dipai.add(s);
            }else if (i%3==0){
    
    
                player01.add(s);
            }else if (i%3==1){
    
    
                player02.add(s);
            }else if (i%3==2){
    
    
                player03.add(s);
            }
        }

        /**
         * 4.看牌
         */
        System.out.println(player01);
        System.out.println(player02);
        System.out.println(player03);
        System.out.println(dipai);
    }
}

结果每次都不一样,如图:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44475741/article/details/107095431
今日推荐