Java中使用HashMap,TreeSet和List来实现模拟斗地主的洗牌和发牌的小例子
模拟斗地主洗牌,发牌
使用HashMap,TreeSet和List来实现
效果如下图所示:
详细实现代码如下:
package star.july.tags;import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;/*** 模拟斗地主洗牌,发牌* 使用HashMap,TreeSet和List来实现* @author Starjuly**/
public class Poker {public static void main(String[] args) {//先把牌设置好String[] num = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};String[] size = {"方块","梅花","红桃","大葵"};HashMap<Integer, String> hm = new HashMap<Integer,String>();ArrayList<Integer> list = new ArrayList<Integer>(); int index = 0;//装牌for(String s1 : num){for(String s2 : size){hm.put(index,s2.concat(s1));list.add(index);index++;}}//装大王和小王hm.put(index, "小王");list.add(index);index++;hm.put(index, "大王");list.add(index);//洗牌:将集合中的顺序打乱Collections.shuffle(list);//定义玩家和底牌TreeSet<Integer> GaoJin = new TreeSet<Integer>();TreeSet<Integer> LongWu = new TreeSet<Integer>();TreeSet<Integer> Me = new TreeSet<Integer>();TreeSet<Integer> DiPai = new TreeSet<Integer>();//将牌发给玩家和留3张底牌for(int i = 0 ; i < list.size() ; i++){if(i >= list.size() - 3){DiPai.add(list.get(i));}else if( i % 3 == 0){GaoJin.add(list.get(i));}else if( i % 3 == 1){LongWu.add(list.get(i));}else{Me.add(list.get(i));}}//遍历每个玩家手中的牌lookPoker(hm, GaoJin, "高进");lookPoker(hm, LongWu, "龙五");lookPoker(hm, Me, "自己");lookPoker(hm, DiPai, "底牌");}public static void lookPoker(HashMap<Integer, String> hm , TreeSet<Integer> ts,String name){System.out.print(name + " 手中的牌: ");for(Integer i : ts){ //用增强for循环遍历TreeSet集合String poker = hm.get(i); //通过key找到HashMap中的值System.out.print(poker + " ");}System.out.println();}
}
Java中使用HashMap,TreeSet和List来实现模拟斗地主的洗牌和发牌的小例子相关推荐
- java练习:模拟试下你斗地主的洗牌、发牌、看牌功能
/*** 需求:模拟实现斗地主的分牌情形* 分析: 1 模拟牌盒,存储54张牌,0-53 每个数字分别对应一张牌,用Map存储* 2 将0-53序号随机分发到三个人手中,欲实现序号的随机排序,考虑使用 ...
- [转]为什么Java中的HashMap默认加载因子是0.75
前几天在一个群里看到有人讨论hashmap中的加载因子为什么是默认0.75. HashMap源码中的加载因子 static final float DEFAULT_LOAD_FACTOR = 0.75 ...
- linux hashmap,Java中对HashMap的深度分析与比较
Java中对HashMap的深度分析与比较 在Java的世界里,无论类还是各种数据,其结构的处理是整个程序的逻辑以及性能的关键.由于本人接触了一个有关性能与逻辑同时并存的问题,于是就开始研究这方面的问 ...
- java中hashmap_Java HashMap – Java中的HashMap
java中hashmap Java HashMap is one of the most popular Collection classes in java. Java HashMap is Has ...
- 使用List在Java中的HashMap实现
HashMap is one of the most widely used implementation of Map to store key-value pairs. It was introd ...
- 关于Java中的HashMap的深浅拷贝的测试与几点思考
0.前言 工作忙起来后,许久不看算法,竟然DFA敏感词算法都要看好一阵才能理解...真是和三阶魔方还原手法一样,田园将芜,非常可惜啊. 在DFA算法中,第一步是需要理解它的数据结构,在此基础上,涉及到 ...
- Java 中的 HashMap
Java 中的 HashMap 作者:Grey 原文地址:Java 中的 HashMap 扩容机制 jdk1.7 先生成新数组. 遍历老数组中的每个位置上的链表上的个元素. 取个元素的key,并基于新 ...
- java foreach hashmap_在 Java 中遍历 HashMap 的5种最佳方式
在本文中,我们将通过示例讨论在 Java 上遍历 HashMap 的五种最佳方式. 使用 Iterator 遍历 HashMap EntrySet 使用 Iterator 遍历 HashM ...
- Java实现斗地主游戏中洗牌,发牌,牌顺序逻辑
需求: 在启动游戏房间时,应提前准备好54张牌完成洗牌,发牌,牌顺序逻辑. 分析: 1.当系统启动的同时需要准备好数据的时候,就可以用静态代码块了. 2.洗牌就是打乱牌的顺序. 3.定义三个玩家.依次 ...
最新文章
- c#_String.Split 方法进阶篇
- TableLayoutPanel
- 模块隐藏(LDR_MODULE链 与 PE特征)
- 请你讲一讲JavaScript有哪些数据类型, 数据类型判断有哪些方法?
- keepalived配置文件详解 ​
- html4废弃了哪些元素,HTML中的一些废弃元素_html
- 一个MD4在线加密脚本源码
- django-admin
- 手动方式配置IPsec隧道
- mysql数据库优化经验_MySQL数据库优化经验详谈
- 微信小程序源码获取(附工具的下载)
- Spring Boot 整合 Thymeleaf 完整 Web 案例
- 我家云刷机omv如何更改设置文件夹权限
- HDU6287 口算训练 【两种优化版分解质因数】【二分下标】
- iOS从零开始学习socket编程——HTTP1.0客户端
- [数字图像处理]模糊算法用于图像增强
- 弦截法求根c语言,弦截法求方程的根(c++)
- 服务器如何装系统和数据库,中软系统服务器及数据库安装规范(含维护).pdf
- java自动红包_Java一个简单的红包生成算法
- 一行代码教你七夕情人节如何告白❤—动漫3D相册(音乐+文字)HTML+CSS+JavaScript