java集合--模拟斗地主发牌洗牌
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集合--模拟斗地主发牌洗牌的更多相关文章
- java 模拟斗地主发牌洗牌
一 模拟斗地主洗牌发牌 1.案例需求 按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 1. 组装54张扑克牌 2. 将54张牌顺序打乱 3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张 ...
- Java学习笔记34(集合框架八:综合案例:模拟斗地主的洗牌发牌)
规则: 1.54张扑克牌,有花色 2.顺序打乱,一人一张依次发牌,一人17张,留三张作为底牌 3.看牌:按大小王2A....43的序排列打印 示例: package demo; import java ...
- java模拟斗地主发牌看牌
import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; public class Dou ...
- Java模拟斗地主发牌和洗牌
package cn.itcast_04; import java.util.ArrayList; import java.util.Collections; import java.util.Has ...
- Java用集合实现斗地主发牌
本文以java双列集合HashMap为核心实现发牌操作: 思路: 1.准备牌:创建一个Map集合,存储牌的索引和组装好的牌 创建一个lis ...
- JAVA代码之斗地主发牌
理解很好理解,关键是思路 按照斗地主的规则,完成洗牌发牌的动作: 具体规则: 1. 组装54张扑克牌 2. 将54张牌顺序打乱 3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌. ...
- php 模拟斗地主发牌简单易懂
闲来无聊,就写了这个方法,也算是熟悉下php的数组操作,还请各位大神多指教.$arr 数组,好像有点问题,应该 2=>'方片2',3=>'梅花2',4=>'红心2',5=>'黑 ...
- 用java集合模拟登录和注册功能
package com.linkage.login; import java.util.HashMap;import java.util.Iterator;import java.util.Map;i ...
- java list随机截取(洗牌)
public void solution(){ List<Integer> givenList = Arrays.asList(1, 2, 3,4,5,6); Collections.sh ...
随机推荐
- 这些Java8官方挖过的坑,你踩过几个?
导读:系统启动异常日志竟然被JDK吞噬无法定位?同样的加密方法,竟然出现部分数据解密失败?往List里面添加数据竟然提示不支持?日期明明间隔1年却输出1天,难不成这是天上人间?1582年神秘消失的10 ...
- [验证码识别技术] 字符型验证码终结者-CNN+BLSTM+CTC
验证码识别(少样本,高精度)项目地址:https://github.com/kerlomz/captcha_trainer 1. 前言 本项目适用于Python3.6,GPU>=NVIDIA G ...
- Spring Boot笔记(一) springboot 集成 swagger-ui
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1.添加依赖 <!--SpringBoot整合Swagger-ui--> <depen ...
- Java 第十一届 蓝桥杯 省模拟赛 第十层的二叉树
一棵10层的二叉树,最多包含多少个结点? 注意当一棵二叉树只有一个结点时为一层. 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数,在提交答案时只填写这个整数,填写多余 ...
- Java实现 LeetCode 688 “马”在棋盘上的概率(DFS+记忆化搜索)
688. "马"在棋盘上的概率 已知一个 NxN 的国际象棋棋盘,棋盘的行号和列号都是从 0 开始.即最左上角的格子记为 (0, 0),最右下角的记为 (N-1, N-1). 现有 ...
- Java实现 蓝桥杯VIP 算法训练 最大值与最小值的计算
输入11个整数,计算它们的最大值和最小值. 样例输入 0 1 2 3 4 5 6 7 8 9 10 样例输出 10 0 import java.util.Scanner; public class 最 ...
- Java实现分割矩形
给定平面内平行于坐标轴的一个矩形,从矩形内选 择一些点,从这些点向右和向上各射出一条射线, 请问:这些射线将矩形分成了多少份. 数据格式: 输入的第一行包含两个整数x, y,表示矩形是由(0, 0), ...
- Fiddler工具学习使用总结
1.初识fiddler: 作用:截获http/HTTPS请求,查看截获的请求内容,伪造客户端请求和服务器响应,测试网站性能,解密https的web会话,提供插件. 工作环境:支持素有操作系统和所有浏览 ...
- MySql多表查询优化
一.多表查询连接的选择 相信内连接,左连接什么的大家都比较熟悉了,当然还有左外连接什么的,基本用不上,我就补贴出来了,这个图只是让大家熟悉一下各种连接查询.然后要告诉大家的是,需要根据查询的信息,想好 ...
- bootargs说明 和 下位机静态ip的设置
setenv bootargs root=/dev/nfs nfsroot=192.168.1.8:/opt/rootfs ip=192.168.1.110:192.168.1. ...