Java模拟斗地主发牌和洗牌
- package cn.itcast_04;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.HashMap;
- import java.util.TreeSet;
- /*
- * 思路:
- * A:创建一个HashMap集合
- * B:创建一个ArrayList集合
- * C:创建花色数组和点数数组
- * D:从0开始往HashMap里面存储编号,并存储对应的牌
- * 同时往ArrayList里面存储编号即可。
- * E:洗牌(洗的是编号)
- * F:发牌(发的也是编号,为了保证编号是排序的,就创建TreeSet集合接收)
- * G:看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)
- */
- public class PokerDemo {
- public static void main(String[] args) {
- // 创建一个HashMap集合
- HashMap<Integer, String> hm = new HashMap<Integer, String>();
- // 创建一个ArrayList集合
- ArrayList<Integer> array = new ArrayList<Integer>();
- // 创建花色数组和点数数组
- // 定义一个花色数组
- String[] colors = { "♠", "♥", "♣", "♦" };
- // 定义一个点数数组
- String[] numbers = { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q",
- "K", "A", "2", };
- // 从0开始往HashMap里面存储编号,并存储对应的牌,同时往ArrayList里面存储编号即可。
- int index = 0;
- for (String number : numbers) {
- for (String color : colors) {
- String poker = color.concat(number);
- hm.put(index, poker);
- array.add(index);
- index++;
- }
- }
- hm.put(index, "小王");
- array.add(index);
- index++;
- hm.put(index, "大王");
- array.add(index);
- // 洗牌(洗的是编号)
- Collections.shuffle(array);
- // 发牌(发的也是编号,为了保证编号是排序的,就创建TreeSet集合接收)
- TreeSet<Integer> fengQingYang = new TreeSet<Integer>();
- TreeSet<Integer> linQingXia = new TreeSet<Integer>();
- TreeSet<Integer> liuYi = new TreeSet<Integer>();
- TreeSet<Integer> diPai = new TreeSet<Integer>();
- for (int x = 0; x < array.size(); x++) {
- if (x >= array.size() - 3) {
- diPai.add(array.get(x));
- } else if (x % 3 == 0) {
- fengQingYang.add(array.get(x));
- } else if (x % 3 == 1) {
- linQingXia.add(array.get(x));
- } else if (x % 3 == 2) {
- liuYi.add(array.get(x));
- }
- }
- // 看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)
- lookPoker("风清扬", fengQingYang, hm);
- lookPoker("林青霞", linQingXia, hm);
- lookPoker("刘意", liuYi, hm);
- lookPoker("底牌", diPai, hm);
- }
- // 写看牌的功能
- public static void lookPoker(String name, TreeSet<Integer> ts,
- HashMap<Integer, String> hm) {
- System.out.print(name + "的牌是:");
- for (Integer key : ts) {
- String value = hm.get(key);
- System.out.print(value + " ");
- }
- System.out.println();
- }
- }
Java模拟斗地主发牌和洗牌的更多相关文章
- java 模拟斗地主发牌洗牌
一 模拟斗地主洗牌发牌 1.案例需求 按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 1. 组装54张扑克牌 2. 将54张牌顺序打乱 3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张 ...
- java模拟斗地主发牌看牌
import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; public class Dou ...
- java集合--模拟斗地主发牌洗牌
import java.util.*; /** * @Date: 2020/6/17 19:53 */public class Test04 { public static void main(Str ...
- java斗地主扑克 扑克牌 洗牌 发牌 Collection 集合练习
package com.swift.poker; import java.util.ArrayList; import java.util.Collections; /*训练考核知识点:Collect ...
- 实现斗地主纸牌游戏---洗牌 发牌 看底牌的具体功能------Map集合存储方法 遍历的应用
该Demo只是斗地主的游戏的一部分,实现的斗地主的组合牌 洗牌 发牌 看牌的功能,主要应用Map集合进行练习 package cn.lijun import java.util.ArrayList ...
- Java模拟斗地主(实现大小排序)
import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.Li ...
- Java实现斗地主发牌(Collections工具类的应用)
package com.doudou_01; import java.util.ArrayList; import java.util.Collections; import java.util.Li ...
- Java 模拟斗地主
模拟斗地主 public class M1 { public static void main(String args[]) { DouDiZhu02(); } private static void ...
- Java程序斗地主发牌代码,List、Map集合的应用
Java集合存储的灵活运用List集合存储 54个编号 Map <key,value> key 对应的是编号 , value 是 牌的花色(红方梅黑)+ 具体的一张牌 ,比如 黑桃2 用2 ...
随机推荐
- hibernate入门一
---恢复内容开始--- hibernate简介: 1.优秀的持久化(通俗讲把内存上的短时间运行信息存储在持久化硬盘上)框架. 2.作用于持久层,因为没什么侵入性,所以同样适用于其他层面上的存储 3. ...
- CSS3扫描动画效果
.swiper-animate { position: absolute; width: 100%; height: 100%; left:; top:; z-index:; background: ...
- python第十八天 多态 和 私有
python的多态比较特别 多态, 字面意思,多种状态. 扩展下 -> 执行同样的操作,结果却不同. 对使用的操作者来说, 就是执行同一个方法, 得到了不同的结果. 在操作者看来,像是 具备 ...
- hadoop_随笔二_参数
1) dfs.datanode.handler.count : datanode上用于处理RPC的线程数.默认为3,较大集群,可适当调大些,比如8.需要注意的是,每添加一个线程,需要的内存增加. 2) ...
- HTTP之请求消息Request
客户端发送一个HTTP请求到服务器的请求消息包括以下格式: 请求行(request line).请求头部(header).空行和请求数据四个部分组成. 请求行以一个方法符号开头,以空格分开,后面跟着请 ...
- 通过该源码修改vim颜色和pudb调试器的代码颜色的方法
2019-02-19,18点20vim调整颜色vim ~/.vimrc 这个pudb的配色用上的方法改不了.调试状态时候按o和回车能切换console和调试界面. 成功了.通过修改pudb源代码来实现 ...
- 【java】:多线程面试题
经常面试的时候,让写各种乱七八糟的多线程面试题,收集了很多,有些还是挺好玩的. 1.编写程序实现,子线程循环10次,接着主线程循环20次,接着再子线程循环10次,主线程循环20次,如此反复,循环50次 ...
- 获取ADO连接字符串
自己如何获取ADO连接字符串 有时候我们参考网上的ADO连接字符串写未必就能连接上数据库.今天详细介绍下这个很流行的如何获取ADO字符串的方法,就能很容易直观看到这个连接字符串是否真能连接上数据库.编 ...
- 计算机爱好者协会技术贴markdown第三期
之前都是给大家展示的对文本的基本操作,这一期我们要给大家展示的就是很高大上的东西了哦 看左边是不是超low,右边是不是瞬间高大上了!!! 一个简单的表格是这么创建的: 爱酱 | Value - ...
- 2T以上磁盘格式化
1.安装软件 对于 Debian/Ubuntu 用户, 使用 APT-GET 命令或者 APT 命令来安装 parted #apt-get install -y parted 对于 RHEL/Cent ...