Java基础---斗地主发牌案例

Java基础--斗地主发牌案例

package io.github.wangermaizi.day05;
/*
* 斗地主代码实现
*   1. 准备牌
*   2. 洗牌
*   3. 发牌
*   4. 看牌
* */

import io.github.wangermaizi.day03.Par;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

public class Doudizhu {
    public static void main(String[] args) {
        // 1. 准备牌
        // 定义一个List用于存储的54张牌的集合, 类型是 String
        ArrayList poker = new ArrayList<>();

        // 定义两个数组, 一个用于存储牌的花色, 一个用于存储牌的序号, 都是String类型
        String[] colors = {"黑", "红", "梅", "方"};
        String[] numbers = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};

        // 先把大王和小王存储到 扑克中
        poker.add("大王");
        poker.add("小王");

        // 渲染嵌套两个数组, 组装成 剩下的52张牌
        for (String number: numbers) {
            for (String color: colors) {
                String tempCard = number + color;
                // 将每张牌存到 扑克中
                poker.add(tempCard);
            }
        }
        // 2. 洗牌 ==> Collections.shuffle直接改变原数组的内容
        Collections.shuffle(poker);

        // 3. 发牌
        /*
        * 定义四个集合, 用于存储三个玩家的牌和一套底牌
        *
        * */

        // 4.

        ArrayList play1 = new ArrayList<>();
        List play2 = new ArrayList<>();
        List play3 = new ArrayList<>();
        List dipai = new ArrayList<>();

        /*
        * 变量改变排序的  54张排序
        * */

        System.out.println(poker.size());
        // return;
        for (int i = 0; i < poker.size(); i++) {
            int rest = i % 3;
            // 先留三张做底牌
            if (i >= 51) {
                dipai.add(poker.get(i));
            } else {
                switch (rest) {
                    case 1:
                        // 给第一个玩家牌, 后续以此类推
                        play1.add(poker.get(i));
                        break;
                    case 2:
                        play2.add(poker.get(i));
                        break;
                    case 0:
                        play3.add(poker.get(i));
                        break;
                    default:
                        throw new Error("程序出现不可预期的错误");
                }
            }
        }

        // 看牌
        System.out.println("play1: "+ play1);
        System.out.println("play2: "+ play2);
        System.out.println("play3: "+ play3);
        System.out.println("dipai: "+dipai);
    }
}

**小结: **

当前只能完成做牌洗牌和发牌, 做好点话的话, 用过是将每张牌的信息存放到一个 map集合里面, 这样谁有叫地主的权利就可以被标记出来, 而在发牌的过程, 页面慢慢向选手手中追加牌的过程, 想简单粗暴点的话完全可以使用数组截取, 在洗牌结束之后, 直接分给玩家 17张牌并流3张底牌

你可能感兴趣的:(Java基础---斗地主发牌案例)