斗地主 | java

代码实现

复制代码
package com.itfxp.doudizhu;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
/*
   斗地主案例步骤:
      1. 组装牌
      2. 洗牌
      3. 发牌 17
      4. 看牌
 */
public class DDZDemo {
    public static void main(String[] args) {
        // 组装牌
        // 牌盒
        HashMap<Integer, String> poker = new HashMap<>();
        // 创建集合:存储的是牌的编号
        ArrayList<Integer> list = new ArrayList<>();
        // 定义变量,记录牌的索引编号
        int index = 2;
        // 定义两个数组
        // 花色
        String[] colors = { "♦", "♣", "♥", "♠"};
        // 数字
        String[] numbers = { "2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3"};

        // 遍历花色和数字数组
        for (String number : numbers) {
            for (String color : colors) {
                String p = color + number;
                poker.put(index, p);
                list.add(index);
                index++;
            }
        }
        // 将大小王存储到集合中
        poker.put(0, "大王");
        list.add(0);

        poker.put(1, "小王");
        list.add(1);
        // System.out.println(list);
        // 洗牌
        Collections.shuffle(list);
        // 发牌
        ArrayList<Integer> player1 = new ArrayList<>();
        ArrayList<Integer> player2 = new ArrayList<>();
        ArrayList<Integer> player3 = new ArrayList<>();
        ArrayList<Integer> diPai = new ArrayList<>();

        // 遍历ArrayList集合
        for (int i = 0; i < list.size(); i++) {
            if (i < 3) {
                // 给底牌
                diPai.add(list.get(i));
            } else if (i % 3 == 0) {
                // 玩家1
                player1.add(list.get(i));
            }else if (i % 3 == 1) {
                // 玩家2
                player2.add(list.get(i));
            }else if (i % 3 == 2) {
                // 玩家1
                player3.add(list.get(i));
            }
        }
        // 排序
        Collections.sort(player1);
        Collections.sort(player2);
        Collections.sort(player3);

        // System.out.println(player1);
        // System.out.println(player2);
        // System.out.println(player3);
        // System.out.println(diPai);

         // 看牌
        lookPoker("花花",player1,poker);
        lookPoker("丽丽",player2,poker);
        lookPoker("乐乐",player3,poker);
        lookPoker("底牌",diPai,poker);

    }

    public static void lookPoker(String playerName, ArrayList<Integer> list, HashMap<Integer, String> poker) {
        System.out.print(playerName+"的牌是:");
        for (Integer key : list) {
            System.out.print(poker.get(key)+"\t");
        }

        System.out.println();
    }
}

运行结果

相关推荐
iVictor4 分钟前
深入解析 Druid 连接池:连接有效性检测与 Keep-Alive 机制
java
平谷一勺8 分钟前
golang中的结构体
开发语言·后端·golang·序列化·结构体·结构体嵌套·匿名结构体嵌套
菜菜的后端私房菜15 分钟前
RocketMQ(十一):事务消息如何满足分布式一致性?
java·后端·rocketmq
Theodore_102224 分钟前
ES6(2) 函数详解
开发语言·前端·javascript·vue.js·es6
风象南27 分钟前
Java本地AI推理初体验:Jlama+LangChain4j构建离线问答系统
java·人工智能·后端
Pyroyster33 分钟前
【Go语言圣经2.3】
开发语言·后端·golang
多云的夏天34 分钟前
Ubuntu 24.04-JAVA-JDBC-mysql
java·开发语言·mysql
代码不停37 分钟前
Java中的封装
android·java·开发语言
Light537 分钟前
Java进阶 | 初识注解
java
yuandll40 分钟前
WIN11开发环境变量记录
java·windows·个人开发