import java.util.*;

/**
* @Date: 2020/6/17 19:53
*/
public class Test04 {
public static void main(String[] args) {
// 请编写斗地主洗牌发牌程序
HashMap<Integer, String> pk = new HashMap<>();//存整副牌
ArrayList<String> num = new ArrayList<>();//牌面
ArrayList<String> color = new ArrayList<>();//存花色
Collections.addAll(num, "2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3");
Collections.addAll(color, "♠", "♥", "♣", "♦");
int id = 0;//给牌大到小编号
pk.put(id++, "大");
pk.put(id++, "小");
//将牌面和花色拼接一起加入整副牌中
for (int i = 0; i < num.size(); i++) {
for (int j = 0; j < color.size(); j++) {
pk.put(id++, color.get(j) + num.get(i));
}
}
//将排序编号提取出来便于打乱顺序
ArrayList<Integer> list = new ArrayList<>();
Set<Integer> i = pk.keySet();
for (Integer integer : i) {
list.add(integer);
}
Collections.shuffle(list);//洗牌
TreeSet<Integer> play1 = new TreeSet<>();//玩家一
TreeSet<Integer> play2 = new TreeSet<>();//玩家二
TreeSet<Integer> play3 = new TreeSet<>();//玩家三
TreeSet<Integer> dipai = new TreeSet<>();//底牌
//发牌
for (int a = 0; a < list.size(); a++) {
if (a >= 51) {
dipai.add(list.get(a));
} else if (a % 3 == 0) {
play1.add(list.get(a));
} else if (a % 3 == 1) {
play2.add(list.get(a));
} else {
play3.add(list.get(a));
}
}
heq("玩家一:", play1, pk);
heq("玩家二:", play2, pk);
heq("玩家三:", play3, pk);
heq("底牌:", dipai, pk);
}
private static void heq(String p, TreeSet<Integer> play, HashMap<Integer, String> pk) {
System.out.print(p + "\t");
for (Integer index : play) {
String s = pk.get(index);
System.out.print(s + "\t");
}
System.out.println();
}
}

玩家一: ♥2 ♣2 ♣A ♥K ♦K ♥Q ♠J ♥J ♦J ♥10 ♠9 ♥8 ♦8 ♠7 ♣7 ♠5 ♣5
玩家二: ♠2 ♦2 ♠K ♠Q ♣J ♣10 ♦10 ♣9 ♦9 ♠6 ♦6 ♥5 ♠4 ♥4 ♦4 ♠3 ♣3
玩家三: 大 小 ♠A ♥A ♦A ♣K ♣Q ♦Q ♥9 ♠8 ♣8 ♦7 ♥6 ♣6 ♦5 ♣4 ♦3
底牌: ♠10 ♥7 ♥3

java集合--模拟斗地主发牌洗牌的更多相关文章

  1. java 模拟斗地主发牌洗牌

    一 模拟斗地主洗牌发牌 1.案例需求 按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 1. 组装54张扑克牌 2. 将54张牌顺序打乱 3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张 ...

  2. Java学习笔记34(集合框架八:综合案例:模拟斗地主的洗牌发牌)

    规则: 1.54张扑克牌,有花色 2.顺序打乱,一人一张依次发牌,一人17张,留三张作为底牌 3.看牌:按大小王2A....43的序排列打印 示例: package demo; import java ...

  3. java模拟斗地主发牌看牌

    import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; public class Dou ...

  4. Java模拟斗地主发牌和洗牌

    package cn.itcast_04; import java.util.ArrayList; import java.util.Collections; import java.util.Has ...

  5. Java用集合实现斗地主发牌

    本文以java双列集合HashMap为核心实现发牌操作:                                思路: 1.准备牌:创建一个Map集合,存储牌的索引和组装好的牌 创建一个lis ...

  6. JAVA代码之斗地主发牌

    理解很好理解,关键是思路 按照斗地主的规则,完成洗牌发牌的动作: 具体规则: 1. 组装54张扑克牌 2. 将54张牌顺序打乱 3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌. ...

  7. php 模拟斗地主发牌简单易懂

    闲来无聊,就写了这个方法,也算是熟悉下php的数组操作,还请各位大神多指教.$arr 数组,好像有点问题,应该 2=>'方片2',3=>'梅花2',4=>'红心2',5=>'黑 ...

  8. 用java集合模拟登录和注册功能

    package com.linkage.login; import java.util.HashMap;import java.util.Iterator;import java.util.Map;i ...

  9. java list随机截取(洗牌)

    public void solution(){ List<Integer> givenList = Arrays.asList(1, 2, 3,4,5,6); Collections.sh ...

随机推荐

  1. 50个SQL语句(MySQL版) 问题十一

    --------------------------表结构-------------------------- student(StuId,StuName,StuAge,StuSex) 学生表 tea ...

  2. Rocket - tilelink - AtomicAutomata

    https://mp.weixin.qq.com/s/O7VTHqpCFNJQi3EpucXkIw   简单介绍AtomicAutomata的实现.(细节问题太多,恕不完全表述.)   ​​   1. ...

  3. java方法句柄-----1.方法句柄类型、调用

    目录 方法句柄 1.方法句柄的类型 1.1MethodType类的对象实例的创建 1.1.1 通过指定参数和返回值的类型来创建MethodType.[显式地指定返回值和参数的类型] 1.1.2 通过静 ...

  4. Java实现 LeetCode 769 最多能完成排序的块(单向遍历)

    769. 最多能完成排序的块 数组arr是[0, 1, -, arr.length - 1]的一种排列,我们将这个数组分割成几个"块",并将这些块分别进行排序.之后再连接起来,使得 ...

  5. Java实现 LeetCode 710 黑名单中的随机数(黑白名单)

    710. 黑名单中的随机数 给定一个包含 [0,n ) 中独特的整数的黑名单 B,写一个函数从 [ 0,n ) 中返回一个不在 B 中的随机整数. 对它进行优化使其尽量少调用系统方法 Math.ran ...

  6. java实现子集和问题

    1 问题描述 求n个正整数构成的一个给定集合A = {a1,a2,a3,-,an}的子集,子集的和要等于一个给定的正整数d.请输出所有符合条件的子集. 2 解决方案 2.1 全排列思想求解 方法1:首 ...

  7. PAT 程序运行时间

    要获得一个 C 语言程序的运行时间,常用的方法是调用头文件 time.h,其中提供了 clock() 函数,可以捕捉从程序开始运行到 clock() 被调用时所耗费的时间.这个时间单位是 clock ...

  8. 使用 xshell 登录 Windows 的 linux 子系统

    1 配置 SSH Server # 卸载自带的 ssh sudo apt-get remove openssh-server # 安装 ssh sudo apt-get install openssh ...

  9. 7. redux

    1.所有的状态统一放在state中,由store来管理state 2.用户触发一个action行为,由dispatch分发action行为 3.通过store把原有的state的状态值和dispatc ...

  10. hadoop知识整理(1)之HDFS

    一.HDFS是一个分布式文件系统 体系架构: hdfs主要包含了3部分,namenode.datanode和secondaryNameNode namenode主要作用和运行方式: 1)管理hdfs的 ...