java学习笔记 - 集合类综合案例 斗地主
集合类方法
最近学到java的各个集合类,常用的有List,Set,Map,这三个都是接口,其中List和Set继承了Collections。
为了锻炼实际掌握各种常用方法的案例,自己写了个斗地主案例
要求
- 组装54张扑克牌将
- 54张牌顺序打乱
- 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。
- 查看三人各自手中的牌(按照牌的大小排序)、底牌
需求分析
- 准备牌: 完成数字与纸牌的映射关系: 使用双列Map(HashMap)集合,完成一个数字与字符串纸牌的对应关系(相当于一个字典)。
- 洗牌: 通过数字完成洗牌发牌
- 发牌: 将每个人以及底牌设计为ArrayList,将最后3张牌直接存放于底牌,剩余牌通过对3取模依次发牌。 存放的过程中要求数字大小与斗地主规则的大小对应。 将代表不同纸牌的数字分配给不同的玩家与底牌。
- 看牌: 通过Map集合找到对应字符展示。 通过查询纸牌与数字的对应关系,由数字转成纸牌字符串再进行展示。
代码实现
package advancedgrammer.collection;import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;public class FightLoad {public static void main(String[] args) {List<String> colors = List.of("红桃", "黑桃", "方块", "梅花"); List<String> numbers = List.of( "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A","2");ArrayList<Integer> index = new ArrayList<>(); //存放牌的索引,shuffle后发给三个人HashMap<Integer, String> poker = new HashMap<>(); //表示牌的hashmap,把54张牌按大小索引存放。int in = 0;for (String number : numbers) {for (String color : colors) {index.add(in);poker.put(in++, color + number);}}poker.put(52, "大王");index.add(52);poker.put(53, "小王");index.add(53);
// System.out.println(poker);Collections.shuffle(index);System.out.println(index);ArrayList<Integer> index1 = new ArrayList<>(); //放每个玩家拿到的牌ArrayList<Integer> index2 = new ArrayList<>();ArrayList<Integer> index3 = new ArrayList<>();ArrayList<Integer> dipaiindex = new ArrayList<>();for (int i = 0; i < 54; i++) {//发牌给三个玩家和底牌if (i > 50) {dipaiindex.add(index.get(i));}else if (i % 3 == 0) {index1.add(index.get(i));}else if (i % 3 == 1) {index2.add(index.get(i));}else if (i % 3 == 2) {index3.add(index.get(i));}}check("诸葛大力",index1,poker);check("陈美嘉",index2,poker);check("诺澜",index3,poker);check("婉瑜",dipaiindex,poker);}//提高复用性,每个玩家的看牌的方法public static void check(String name,ArrayList<Integer> index,HashMap<Integer, String> poker) {Collections.sort(index);System.out.print(name + ":");for (Integer integer : index) {System.out.print(poker.get(integer) + " ");}System.out.println();};
}
一次看牌的结果
java学习笔记 - 集合类综合案例 斗地主相关推荐
- Java基础加强重温_05:Iterator迭代器、增强for循环、集合综合案例-斗地主、数据结构(栈、队列、数组、链表、红黑树)、List接口、Set接口
摘要: Java基础加强重温_05: Iterator迭代器(指针跟踪元素). 增强for循环(格式.底层). 集合综合案例-斗地主(代码规范抽取代码,集合元素打乱). 数据结构[栈(先进后出,子弹夹 ...
- java学习笔记---5
IO流 I〇流概述: lO:输入/输出(Input/Output) 流:是一种抽象概念,是对数据传输的总称.也就是说数据在设备间的传输称为流,流的本质是数据传输IO流就是用来处理设备间数据传输问题的: ...
- java学习笔记11--集合总结
java学习笔记系列: java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 java学习笔记6--类的继承.Ob ...
- Java学习笔记——流程控制
Java学习笔记--流程控制 Day05 一.用户交互Scanner 1.Scanner对象 我们通过Java工具包java.util.Scanner中的Scanner类来获取用户的输入 基本语法:S ...
- java学习笔记day09 final、多态、抽象类、接口
java学习笔记day09 思维导图 final . 多态 . 抽象类 . 接口 (都很重要) 一.final 二.多态 多态中的成员访问特点⭐ [P237] 多态的好处 [P239] 多态的弊端 向 ...
- java学习笔记:全部,txt版本
java学习笔记:全部,txt版本 笔者注: 1.不知道怎么上传附件,所以就把txt文本内容全部贴在这里吧. 2.已经把txt版本的笔记上传到CSDN了,我没有设置索要积分才能下载,但是不知道为什么C ...
- Java学习笔记 第八天
Java学习笔记 第八天 第一章 API 1.1 概述: 1.2 API文档的使用步骤:** 第二章 Scanner类 2.1 概述 2.2 引用类型使用步骤 2.3 Scanner类练习1---求和 ...
- Java学习笔记-Day64 Spring 框架(二)
Java学习笔记-Day64 Spring 框架(二) 一.控制反转IOC和依赖注入DI 1.控制反转IOC 2.依赖注入DI 3.Spring IOC容器 3.1.简介 3.2.实现容器 3.2.获 ...
- JAVA学习笔记(1)【基础知识】
JAVA学习笔记DAY_1 提示:关于java系列的内容只是本人在老师的指导下和自学过程中的一些学习笔记,如果存在错误敬请批评指正! 文章目录 JAVA学习笔记DAY_1 前言 一.Java语言未来的 ...
最新文章
- nova hypervisor接口添加host_ip字段
- Java 技术小图谱
- Java_Spring MVC_Servlet
- 构建大型网站架构服务器集群(转)
- BigData | 一文带你搞清楚“数据倾斜”
- python编写水仙花数
- 电脑软件推荐【含软件链接】:压缩,插件,截屏,录制,办公,电脑防护与修复,磁盘清理,软件卸载......
- 光环PMP 串讲冲刺 敏捷
- Nodejs教程15:net模块初探
- 运动学逆解(四足机器狗)
- 加拿大蒙特利尔城市风景高清Mac动态壁纸
- css中图片在div中的位置,纯CSS实现任意图片在div中垂直居中
- 摩托车新手驾驶教程[3]
- 《Thinking In Java》作者:不要使用并发!
- 常见的BeanUtils.populate异常 解决方案
- python控件_python常用控件
- SQL Server 2005系列教学(11) 约束
- Ubuntu 22.04 安装R语言及R studio
- 新闻丨智链万源CEO董宁受邀参加NTT DATA全球区块链峰会,畅谈数字化信任经济...
- matlab模拟gpd,GPD WIN1流畅玩游戏之DOS游戏,阿猫阿狗大作战 大宇16个DOS游戏全合集...