欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java-斗地主案例分析以及源码

程序员文章站 2022-07-10 17:03:44
...

斗地主案例分析

54张牌打乱顺序,三人交替摸牌,每人17张,最后三张作为底牌

分析:
  1. 准备牌

    54张牌,其中包括两张特殊的牌:大小王

    其他52张牌:

    • 定义以一个数组/集合,包括四种花色:桃、心、梅、方

    • 定义以一个数组/集合,面值:A、2、3、…、K

      将两个集合组合起来变成剩余的52张

  2. 洗牌:使用集合工具类Collections的方法

    static void shuffle(List<?> List)使用指定的随机源对指定的列表进行置换

    随机打乱集合中的元素

  3. 摸牌:要求1人17张牌,剩余三张作为底牌,一人一张轮流发牌:集合的索引(0-53)%3

    定义4个集合,分别存储3个玩家的牌和底牌

    索引%3,有三个值(0,1,2)

    索引>=51,给底牌发牌

  4. 看牌:打印遍历集合

源码:

package DouDiZhu;

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

public class Ddz {
    public static void main(String[] args) {
        //定义以一个ArrayList集合来存储54张牌
        ArrayList<String> poker = new ArrayList<>();

        //定义两个数组分别存花色和数值
        String[] color = {"♠","♥","♣","♦"};
        String[] number = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
        //将大小王先放扑克集合中
        poker.add("BigJoker");
        poker.add("SmallJoker");

        //循环嵌套两个数组,组装52张牌,并把牌放到扑克集合当中
        for (String numbers : number) {
            for (String colors : color) {
                poker.add(colors+numbers);
            }
        }

        //打乱顺序
        Collections.shuffle(poker);

        //定义四个集合来
        ArrayList<String> people1 = new ArrayList<>();
        ArrayList<String> people2 = new ArrayList<>();
        ArrayList<String> people3 = new ArrayList<>();
        ArrayList<String> lastPoker = new ArrayList<>();


        //发牌
        int i = 0;
        while (i <= 50){
            if (i%3 == 0){
                people1.add(poker.get(i));
            }else if (i%3 == 1){
                people2.add(poker.get(i));
            }else if (i%3 == 2){
                people3.add(poker.get(i));
            }
            i++;
        }

        //把最后的三张牌作为底牌,放到底牌集合中
        lastPoker.add(poker.get(51));
        lastPoker.add(poker.get(52));
        lastPoker.add(poker.get(53));

        //看牌,打印集合
        System.out.println("三千七百万:"+people1);
        System.out.println("反手一个超级加倍:"+people2);
        System.out.println("闷声发大财慈善家:"+people3);
        System.out.println(lastPoker);
    }
}

结果展示
Java-斗地主案例分析以及源码

相关标签: Java 案例