【练习】JavaSE实现控制台版本的斗地主部分功能
文章目录
- 题目
- 思路分析
- 代码示例
题目
使用集合实现斗地主游戏的部分功能,要求如下:
- 首先准备 54 张扑克牌并打乱顺序。
- 由三个玩家交替摸牌,每人 17 张扑克牌,最后三张留作底牌。
- 查看三个玩家手中的扑克牌和底牌。
- 其中玩家手中的扑克牌需要按照大小顺序打印,规则如下:
- 手中扑克牌从大到小的摆放顺序:大王,小王,2,A,K,Q,J,10,9,8,7,6,5,4,3
思路分析
- 扑克牌由花色和字符组成,首先声明一个集合存放花色,再声明一个集合存放字符,通过双重foreach循环进行字符串的拼接
- 声明一个集合,存放索引,每拼接一个字符串(一张扑克牌),索引+1且存放入集合,并将索引拼接后的字符串存入map集合,索引作为key,拼接后的字符串作为value。
- 采用集合工具类Collentions中的shuffle方法随即置换索引集合进行洗牌
- 将索引集合转换为队列作为牌堆,抓牌即为出队
- 声明4个集合存放三名玩家手牌和底牌,循环抓牌17次,留下底牌,并存放入集合
- 通过集合的sort方法自动排序玩家手牌,进行遍历展示手牌和底牌
代码示例
package com.lagou.homework;import java.lang.reflect.Array;
import java.util.*;/*使用集合实现斗地主游戏的部分功能,要求如下:(1)首先准备 54 张扑克牌并打乱顺序。(2)由三个玩家交替摸牌,每人 17 张扑克牌,最后三张留作底牌。(3)查看三个玩家手中的扑克牌和底牌。(4)其中玩家手中的扑克牌需要按照大小顺序打印,规则如下:手中扑克牌从大到小的摆放顺序:大王,小王,2,A,K,Q,J,10,9,8,7,6,5,4,3*/
public class HomeWork3_3 {//声明一个集合作为扑克牌//新建HashMap存牌 key作为牌的唯一标识public static HashMap<Integer,String> pokermap = new HashMap<>();//声明一个列表存key (只有单值的列表方便打乱顺序)public static ArrayList<Integer> arrayList = new ArrayList<>();//声明花色数组public static String[] pokercolor = new String[]{"♥","♠","♣","♦"};//声明牌面字符数组(不包括大小王)public static String[] pokerchar = new String[]{"2","A","K","Q","J","10","9","8","7","6","5","4","3"};//洗好后的牌堆队列 (队列出队删减的特点方便抓牌)public static Queue<Integer> queueall;//三个玩家的手牌和底牌(为了能自动排序 使用TreeSet)public static TreeSet<Integer> player1 = new TreeSet<>();public static TreeSet<Integer> player2= new TreeSet<>();public static TreeSet<Integer> player3= new TreeSet<>();public static TreeSet<Integer> dipai = new TreeSet<>();//显示玩家的牌和底牌public static void show(HashMap<Integer,String> map/*总扑克牌*/,TreeSet<Integer> set,String string/*玩家称号*/){System.out.print(string+": ");//玩家称呼:for (Integer i :set) {System.out.print(map.get(i)+" ");//获取key对应的value}System.out.println();}public static void main(String[] args) {//声明一个key作为扑克牌的map集合的key的同时作为索引int key = 1;pokermap.put(key,"大王");//单独添加小王arrayList.add(key);//存入索引数组key++;//存入一张牌 索引自增pokermap.put(key,"小王");//单独添加大王arrayList.add(key);//存入索引数组key++;//存入一张牌 索引自增for (String charstr:pokerchar) {for (String colorstr:pokercolor) {//将花色和字符连接起来 以字符作为外循环 可以保证 3~2的顺序里数字大的key一定小pokermap.put(key,colorstr.concat(charstr));arrayList.add(key);key++;}}//洗牌 采用Collections工具类的随即置换Collections.shuffle(arrayList);Queue<Integer> queue = new LinkedList<>(arrayList);//每个人17张牌 循环摸牌17次// Iterator<Integer> pokerIterator = arrayList.iterator();for (int i = 0 ; i < 17; i++){player1.add(queue.poll());//牌堆出队的牌给到玩家player2.add(queue.poll());player3.add(queue.poll());}//将底牌存入集合int len = queue.size();//提前取出底牌剩余数for (int i = 0; i<len;i++){dipai.add(queue.poll());}//查看牌show(pokermap,player1,"玩家一");show(pokermap,player2,"玩家二");show(pokermap,player3,"玩家三");show(pokermap,dipai,"底牌");}
}
【练习】JavaSE实现控制台版本的斗地主部分功能相关推荐
- 2048——Java控制台版本
前情提要,祝2021年的蓝桥杯小伙伴成绩突出. 贪心.杂凑.递归.分类.评分.哈希.共识.聚类.分治.启发式.粒子群.最大期望.最小完成时间.序列最小优化....算法无数,但是基础类似,无非坐标处理. ...
- 去除代码行号的一个小程序(控制台版本)
清风竹林发布了去除代码行号的一个小程序,确实方便大家收集一些文章代码,但个人认为象这样的小东东,要使广大网友能拿来就用,用.Net 2.0做成WinForm,有点贵族化了,于是动手整出个平民化的控制台 ...
- PjComm:控制台版本的串口调试助手
为了学习C#,所以,自己动手,开发了一个小小的控制台版本的串口调试助手PjComm,截图如下: 上图中的蓝色背景的字符,为热键.在使用SendData时,若串口没有打开,则自动打开.若已经打开,会暂时 ...
- 农场游戏开发记录十七(控制台版本完成)
今天,已过12点应该是昨天,终于把控制台版本的农场游戏开发完成了.说是开发有点厚脸皮,因为我自己确实没写过这么成体系的代码.成就感还是挺充足的.代码就不在这里放了,另外上传.这里放一点运行时的截图吧.
- 13.JavaAPI(DAO模式+图书管理系统控制台版本)
目录 一.理解程序设计分层的思想 二.DAO设计模式的组成以及各部分的开发 2.1 概述 2.2 DAO模式作用 2.3 DAO模式组成 三.DAO模式实现图书信息管理系统控制台版本之增删改查 3.1 ...
- 三国杀java游戏_计算机毕业课程设计源码-131Java三国杀游戏控制台版本
file://C:\Users\Administrator\Desktop\Java三国杀游戏控制台版本 (1 folders, 3 files, 43.90 MB, 44.11 MB in tota ...
- JeeWx 商业版本最近新增什么功能啦?
JeeWx 商业版本最近新增什么功能啦? 2014-12-18 jeecg JEECG jeewx开发新功能 一.微信墙 此功能可以设置属于该公共号的微信墙,在微信客户端上输入微信墙即可进入微信墙模式 ...
- JEECG 商业版本最近新增什么功能啦?
JEECG 商业版本最近新增什么功能啦? 2014-12-18 JEECG JEECG jeecg增加新的功能啦!!! 1.流程设计器 2.集成工作流引擎activit,智能化封装,在线配置表单,在线 ...
- IntelliJ IDEA 自定义控制台输出多颜色格式功能 --- 安装Grep Console插件
IntelliJ IDEA 自定义控制台输出多颜色格式功能 1. 打开IDEA设置面板 2. 点击插件(Plugins)安装Grep Console 3. 重启IDEA后设置颜色 4. 效果图 5. ...
最新文章
- 服务器php将视频转为m3u8,php应用ffmpeg对mp4文件转换并生成m3u8视频流文件
- Eclipse自动注册Servlet:web.xml注册和@Servlet注解 实现注册
- Partial Sums ZOJ - 1569
- matlab 设计带阻型陷波滤波器_Q值可调、最大增益恒定的带通滤波器
- github怎么搜索开源的代码_5.2.PYTHON开发利器之使用VS Code+GitHub进行python开源项目开发...
- linux 安装校园客户端,Ubuntu Linux环境下校园网客户端安装使用
- 南阳理工ACM 28大数阶乘
- html5移动端webscoket实现在线聊天
- 支持USB Video Class的摄像头
- 【游戏开发进阶】教你在Windows平台编译tolua runtime的各个平台库(Unity | 热更新 | tolua | 交叉编译)
- 中国电信物联网开发平台北向开发获取设备ID及其历史产生的数据
- 关于电脑热点打开后手机连接无IP分配解决办法
- crx插件转换火狐插件_我的Firefox插件
- 安卓-几种查看SHA1和MD5的方法
- 答题对战方案java_使用WebSocket实现实时多人答题对战游戏
- Visio画出简单的拓扑图
- subversion linux 服务器端搭建 源码安装
- flush()的作用
- 用结构体数组存储学生信息,输入学生学号,查询相应的成绩
- ★ZOJ 3380 Patchouli's Spell Cards 详细题解 (递推+组合数求方案数)