Java集合,扑克牌的小项目练习
Java集合,扑克牌的小项目练习
2小时学完了类与集合,一直二倍加跳过,集合和类的学习我觉得得多实践中去记住,光靠背,永远也背不完,学的时候记一下常用的,特殊的就行了,用的时候再查,多写代码才能会,哈哈哈,学的很糙,所以来实践了,这是扑克牌,需要码牌,洗牌,开牌,看牌(经典小品在这里太符合了)~~
这里我们需要满足一个条件和一个小细节~~
- 需要每个玩家拿到牌的时候排好序了,就相当于你玩斗地主的时候,你本能会把牌排序方便你构思牌路
- 留3张底牌,玩游戏的时候肯定要抢地主对吧,哈哈哈~~
直接贴源码了,因为使用类这方面的学习都还是挺简单的(懂的都懂,不懂的永远都不懂,数据结构和算法,永远的神),思路贴出来就行了,不用再给大家写详细注释了~~
package com.zaunekko.blog.project;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;
public class PokerDemo {
public static void main(String[] args) {
//创建HashMap,键是编号,值是牌
HashMap<Integer, String> hashMap = new HashMap<>();
//创建ArrayList,存储编号
ArrayList<Integer> arrayList = new ArrayList<>();
//创建花色数组和点数数组
String[] colors = {"","","",""};
String[] numbers = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
//hashmap存入编号和牌,arraylist存入编号
int index = 0;
for (String number : numbers){
for (String color : colors) {
hashMap.put(index,color + number);
arrayList.add(index);
++index;
}
}
hashMap.put(index,"小王");
arrayList.add(index);
++index;
hashMap.put(index,"大王");
arrayList.add(index);
//洗牌
Collections.shuffle(arrayList);
//发牌
TreeSet<Integer> txxSet = new TreeSet<>();
TreeSet<Integer> fybSet = new TreeSet<>();
TreeSet<Integer> yySet = new TreeSet<>();
TreeSet<Integer> downSet = new TreeSet<>();
for (int i = 0; i < arrayList.size(); i++) {
int temp = arrayList.get(i);
if (i >= arrayList.size() - 3){
downSet.add(temp);
}else if (i % 3 == 0){
txxSet.add(temp);
}else if (i % 3 == 1){
fybSet.add(temp);
}else{
yySet.add(temp);
}
}
//看牌
lookPoker("TXX",txxSet,hashMap);
lookPoker("FYB",fybSet,hashMap);
lookPoker("YY",yySet,hashMap);
lookPoker("底牌",downSet,hashMap);
}
private static void lookPoker(String name, TreeSet<Integer> nameSet,HashMap<Integer,String> hashMap){
System.out.print(name + "的牌:" );
for (Integer key : nameSet){
String poker = hashMap.get(key);//0开始遍历键取值
System.out.print(poker + " ");
}
System.out.println();
}
}
结果是这样的
最下面的人牌最好,我就不说谁是谁了,哈哈~~
Java集合,扑克牌的小项目练习的更多相关文章
- java Socket(TCP)编程小项目
package 服务器端相关操作; import java.io.Serializable; /* * 创建存储需要传输信息的对象,方便客户端向服务器端传送数据 */ public class Cli ...
- Java小项目--坦克大战(version1.0)
Java小项目--坦克大战<TankWar1.0> 这个小项目主要是练习j2se的基础内容和面向对象的思想.项目实现了基本的简单功能,我方一辆坦克,用上下左右键控制移动方向,按F键为发射炮 ...
- IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题
IT咨询顾问:一次吐血的项目救火 年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登 ...
- 个人小项目——Java实现WC功能
这个小项目用了两种方法解决了该功能的实现. 1.两种方法的功能和具体实现 代码可以成功运行,但是有一些情况考虑不完整,一种方法用了FileOutputStream输出流,为了解决空格无法统计问题,对文 ...
- Java学习笔记三十:Java小项目之租车系统
Java小项目之租车系统 一:项目背景介绍: 根据所学知识,编写一个控制台版的“呱呱租车系统” 功能: 1.展示所有可租车辆: 2.选择车型.租车量: 3.展示租车清单,包含:总金额.总载货量以及其车 ...
- Java小项目之:五子棋,你下棋下得过电脑吗?
Java小项目之:五子棋,你下棋下得过电脑吗? Java五子棋功能要求: 1.创建窗口和设计一个棋盘界面 2.实现鼠标点击,棋子出现,黑白棋轮流下 3.能够判断五子相连输赢 4.添加重新开始,悔棋,退 ...
- java小项目之:扫雷,这游戏没有你想的那么简单!
扫雷 我之前分享的小项目和小游戏,电影购票.坦克大战.捕鱼达人.贪吃蛇等,虽然已经是耳熟能详人尽皆知的项目和游戏,但是保不齐真的有人没接触过. 今天分享的这个项目,我不相信没人接触过(仅限80后-00 ...
- java小项目之:植物大战僵尸,这个僵尸有点冷!内附素材源码
Java小项目之:植物大战僵尸! <植物大战僵尸>是由PopCap Games开发的一款益智策略类单机游戏,于2009年5月5日发售,这款游戏可谓是无人不知无人不晓. 在我身边,上到40岁 ...
- Java小项目之:教你做个聊天系统!
Java小项目之:聊天系统 今天给大家带来的java练手小项目是一个简单的聊天室,界面简单,操作不难. 分为注册系统,登录系统和聊天系统三部分,很适合java小白练手. 完整的源码和素材请关注并私信我 ...
随机推荐
- ES核心概念和原理
ES:1:倒排索引 基于Document 关键词索引实现 . 根据关键词做索引 相关度 a. 数据结构 i. 包含关键词的Document List ii. 关键词在每个doc中出现的次数 词频 TF ...
- Go 中的 gRPC 入门详解
目录 Go GRPC 入门 1,安装包 2,gRPC 服务端 3,gRPC 客户端 4,编译运行 5,其它 GRPC Protobuf buffer 字段类型 字段规则 Protobuf gRPC 四 ...
- OO第一单元感悟与体会
第一单元的三次编程作业结束了,现在分享一些我对自己作业的分析和感想 1.程序结构的分析 第一次作业: 本次作业我的主要思路是,为每一项写一个正则表达式,在输入的字符串中匹配每一项,多项式类中保存着一个 ...
- 快速上手阿里云oss SDK
使用阿里云oss SDK 依赖安装: pip install oss2 pip install aliyun-python-sdk-sts 版本最好是 2.7.5 或以上 如果要开启 crc64 循环 ...
- ELK查询命令详解总结
目录 ELK查询命令详解 倒排索引 倒排索引原理 分词器介绍及内置分词器 使用ElasticSearch API 实现CRUD 批量获取文档 使用Bulk API 实现批量操作 版本控制 什么是Map ...
- openGL官方Glut库配置教程
在配置前要先安装好Visual Stdio环境 官方下载网站 注:一台Windows操作系统中可以存在多版本的Visual Stdio,多个版本之间互不干扰但不共享插件库,且高版本向下兼容,因此笔者更 ...
- java面试-阻塞队列
一.阻塞队列 当阻塞队列是空,从队列中获取元素的操作会被阻塞 当阻塞队列是满,往队列中添加元素的操作会被阻塞 二.为什么用,有什么好处? 我们不需要关心什么时候需要阻塞线程,什么时候需要唤醒线程,因为 ...
- Dynamics CRM各个版本的元数据浏览解决方案
https://docs.microsoft.com/en-us/dynamics365/customerengagement/on-premises/developer/browse-your-me ...
- B1029/A1048 旧键盘损坏了,在输入一段文字时坏了的键不可以正常使用,现给出应输入的一段文字,和实际输出的文字,找出坏掉的键。
#include<cstdio> #include<cstring> const int maxn = 1000; bool HashTable[maxn] = { false ...
- 第一个 vue-cli项目
第一个 vue-cli项目 什么是vue-cli vue-cli官方提供的一个脚手架,用于快速生成一个vue的项目模板: 预先定义好的目录结构及基础代码,就好比咱们在创建Maven项目时可以选择创建一 ...