0
点赞
收藏
分享

微信扫一扫

Java——模拟斗地主

进击的包籽 2022-04-19 阅读 42
java

需求

模拟斗地主过程的洗牌,发牌和看牌,要求对牌进行排序

思路

  1. 创建HashMap,键是编号,值是牌
  2. 创建ArrayList,存储编号
  3. 创建花色数组和点数数组
  4. 从0开始往HashMap中存储编号,并存储对应的牌,同时往ArrayList中存储编号
  5. 洗牌(洗的是序号),用Collections的shuffle()实现
  6. 发牌(发的也是序号,为了保证序号是排序的,创建TreeSet集合接收)
  7. 定义看牌方法,遍历TreeSet集合,获取编号,到HashMapihe找对应的牌
  8. 调用看牌方法

代码

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;

public class DouDiZhu {
    public static void main(String[] args) {
        HashMap<Integer, String> hash = new HashMap<Integer, String>();
        ArrayList<Integer> array = new ArrayList<Integer>();
        String[] color = {"♣", "♥", "♦", "♠"};
        String[] number = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "O", "K", "A"};
        int index = 0;
        for (String s1 : number) {
            for (String s : color) {
                hash.put(index, s + s1);
                array.add(index);
                index++;
            }
        }
        hash.put(index, "大王");
        array.add(index);
        index++;
        hash.put(index, "小王");
        array.add(index);
        Collections.shuffle(array);
        TreeSet<Integer> ts1 = new TreeSet<Integer>();
        TreeSet<Integer> ts2 = new TreeSet<Integer>();
        TreeSet<Integer> ts3 = new TreeSet<Integer>();
        TreeSet<Integer> diPai = new TreeSet<Integer>();
        for (int i = 0; i < array.size(); i++) {
            int x = array.get(i);
            if (i >= array.size() - 3) {
                diPai.add(x);
            } else if (i % 3 == 0 || i == 0) {
                ts1.add(x);
            } else if (i % 3 == 1) {
                ts2.add(x);
            } else if (i % 3 == 2) {
                ts3.add(x);
            }
        }
        look("zlx", ts1, hash);
        look("zju", ts2, hash);
        look("jik", ts3, hash);
    }

    public static void look(String name, TreeSet<Integer> ts, HashMap<Integer, String> hm) {
        System.out.println(name + "的牌:");
        for (Integer t : ts) {
            String value = hm.get(t);
            System.out.print(value + " ");
        }
        System.out.println();
    }
}

运行结果
在这里插入图片描述

举报

相关推荐

0 条评论