面向对象项目实战-----QuickHit

16、Java——QuickHit游戏 (1)QuickHit游戏考验学员键盘输入内容的速度和准确性。 (2)根据输入速率和正确性将玩家分为不同级别,级别越高,一次显示的字符数越多,玩家正确输入一次的得分也越高。 (3)如果玩家在规定的时间内完成规定次数的输入,正确率达到规定要求,则玩家升级(为了简单起见,规定用户只要输入错误一次,则游戏结束) (4)玩家最高级别为6级,初始级别一律为一级。 阅读详情

项目需求:

根据输入速率和正确率将玩家分为不同级别,级别越高,一次显示的字符数越多。如果 玩家在规定时间内完成规定次数的输入,正确率达到要求,则玩家升级。最高级别为6级,初始级别为1.项目实现代码如下:

实现项目的代码:

//游戏类
public class Game {
	/***
	 * 玩家属性
	 */
	public Player play;		

	public Player getPlay() {
		return play;
	}

	public void setPlay(Player play) {
		this.play = play;
	}
	
	public Game(Player play) {		
		this.play = play;
	}

	/***
	 * 输出字符串,返回字符串用于和玩家的输入进行比较
	 * @return
	 */
	public String printStr() {
		StringBuffer sbu=new StringBuffer();
		Random rand=new Random(); 	//产生随机数类
		//根据相应的等级,来获得相应的输入次数
		int strLength=LevelParam.level[play.getLevelNo()-1].getStrLength();

		for(int i=0;i<strLength;i++) {
			int randNum=rand.nextInt(strLength);	//产生随机数
			switch(randNum) {
			case 0:
				sbu.append(">");
				break;
			case 1:
				sbu.append("<");
				break;
			case 2:
				sbu.append("!");
				break;
			case 3:
				sbu.append("#");
				break;
			case 4:
				sbu.append("@");
				break;
			case 5:
				sbu.append("%");
				break;
			case 6:
				sbu.append("&");
				break;
			case 7:
				sbu.append("*");
				break;
			case 8:
				sbu.append("~");
				break;
			case 9:
				sbu.append("?");
				break;
			}
		}
		System.out.println(sbu);  	//输出字符串
		return sbu.toString();		//返回字符串
	}
	
	
	/**
	 * 比较游戏输出out,和玩家输入in,根据结果输出信息
	 */
	public void prinrResult(String out,String in) {
		//输入正确
		if(out.equals(in)) {
			long currentTime=System.currentTimeMillis();
			//如果超时
			if((currentTime-play.getStartTime())/1000>LevelParam.level[play.getLevelNo()-1].getTimeLimit()) {
				System.out.println("你输入的太慢了,已经超时,退出!");
				System.exit(1);
			}
				//如果没有超时
				//计算玩家当前的积分
				play.setCurrScore(play.getCurrScore()+LevelParam.level[play.getLevelNo()-1].getPerScore());
				//计算已用时间
				play.setElapsedTime((int)(currentTime-play.getStartTime())/1000);
				//输出玩家当前级别,当前积分,已用时间
				System.out.println("输入正确,你的级别是:"+play.getLevelNo()+",你的积分是:"+play.getCurrScore()+",已用时间:"+play.getElapsedTime()+"秒!");
				
				//判断用户是否已经闯过最后一关:等级为6,玩家获得的积分==通过所需要的分数(次数*每次的分数)
				if(play.getLevelNo()==6) {
					//获得通关所需要的分数
					int score=LevelParam.level[play.getLevelNo()-1].getPerScore()*LevelParam.level[play.getLevelNo()-1].getStrTime();
					if(score==play.getCurrScore()) {
						System.out.println("恭喜你,通关了~");
						System.exit(0);
					}
				}
		}else {
			//输入错误
			System.out.println("输入错误,退出!");
			System.exit(1);
		}
	}
	
	
}


//玩家类
public class Player {
	private int levelNo;		//级别
	private int currScore;		//积分
	private long startTime;		//开始时间
	private int elapsedTime;	//已用时间
	
	public int getLevelNo() {
		return levelNo;
	}
	public void setLevelNo(int levelNo) {
		this.levelNo = levelNo;
	}
	public int getCurrScore() {
		return currScore;
	}
	public void setCurrScore(int currScore) {
		this.currScore = currScore;
	}
	public long getStartTime() {
		return startTime;
	}
	public void setStartTime(long startTime) {
		this.startTime = startTime;
	}
	public int getElapsedTime() {
		return elapsedTime;
	}
	public void setElapsedTime(int elapsedTime) {
		this.elapsedTime = elapsedTime;
	}
	
	/**
	 * 玩家玩游戏
	 */
	public void play() {
		Scanner input=new Scanner(System.in);
		
		Game game=new Game(this);	//this--->指当前对象的引用,传入的值是当前Player类(现在没创建对象)以后创建对象的引用。
		//外层循环一次,等级加1
		for(int i=0;i<LevelParam.level.length;i++) {
			//等级加1
			this.levelNo+=1;
			//积分清0
			this.currScore=0;
			//计时清0
			this.startTime=System.currentTimeMillis();
			
			//获得每个级别对应的字符串输入字数
			int strLength=LevelParam.level[levelNo-1].getStrTime();
			
			//内层循环一次,判断玩家输入的字符串
			for(int k=0;k<strLength;k++) {
				//游戏输出字符串
				String out=game.printStr();
				//玩家输入
				String in=input.next();
				//判断玩家输入的字符串,并输出相应结果
				game.prinrResult(out, in);
			}
		}
		
	}
	
	
}


//级别类
public class Level {
	private int levleNo;		//级别编号
	private int strLength;		//输出的字符串长度
	private int strTime;		//输出字符串的次数
	private int timeLimit;		//闯关时间
	private int perScore;		//输入正确的得分
	
	public int getLevleNo() {
		return levleNo;
	}
	public void setLevleNo(int levleNo) {
		this.levleNo = levleNo;
	}
	public int getStrLength() {
		return strLength;
	}
	public void setStrLength(int strLength) {
		this.strLength = strLength;
	}
	public int getStrTime() {
		return strTime;
	}
	public void setStrTime(int strTime) {
		this.strTime = strTime;
	}
	public int getTimeLimit() {
		return timeLimit;
	}
	public void setTimeLimit(int timeLimit) {
		this.timeLimit = timeLimit;
	}
	public int getPerScore() {
		return perScore;
	}
	public void setPerScore(int perScore) {
		this.perScore = perScore;
	}
	public Level(int levleNo, int strLength, int strTime, int timeLimit, int perScore) {
		super();
		this.levleNo = levleNo;
		this.strLength = strLength;
		this.strTime = strTime;
		this.timeLimit = timeLimit;
		this.perScore = perScore;
	}
	
}


//级别参数类
public class LevelParam {
	//对应玩游戏的6个级别
	public static final Level level[]=new Level[6];
	
	static {
		level[0]=new Level(1,2,10,30,1);
		level[1]=new Level(2,3,9,26,2);
		level[2]=new Level(3,4,8,22,5);
		level[3]=new Level(4,5,7,18,8);
		level[4]=new Level(5,6,6,15,10);
		level[5]=new Level(6,7,5,12,15);
	}
}


//测试类
public class Test {
	public static void main(String[] args) {
		Player p = new Player();
		p.play();
	}
}

效果图:

Java小游戏开发实战:QuickHit代码项目 游戏循环可以被定义为一种在游戏运行期间不断重复的控制结构,它以固定的时间间隔更新游戏状态,并渲染下一帧的游戏画面。游戏循环的重要性体现在以下几个方面:保持游戏运行:游戏循环确保游戏在开启后可以持续运行,直到收到停止信号。游戏状态同步:游戏循环通过不断更新游戏世界状态,保持游戏世界和玩家操作之间的同步。画面渲染:它负责在屏幕上显示游戏画面的更新,以响应玩家的操作和游戏逻辑的变化。性能控制:通过控制游戏循环的执行速度,开发者可以管理游戏的帧率和响应时间,优化用户体验。 阅读详情

相关推荐

K8s认证文件丢失的应急处理与恢复策略

本文详细介绍了Kubernetes(K8s)认证文件丢失时的应急处理与恢复策略。从快速诊断问题范围到不同场景的临时解决方案,再到深度恢复方案(无损重建、部分重置、完全重建),提供了全面的操作指南。同时强调了生产环境中的防丢失设计、高可用集群的特殊处理以及日常运维建议,帮助运维人员有效应对认证文件丢失的紧急情况。

weixin_33743248的博客 327

Java面向对象–QuickHit项目

Player类 package QuickHit; import java.util.Scanner; /** * * @author LiQingLin * */ public class Player { private int levelNo;//当前级别号 private int curScore;//当前级别积分 private long startTime;//当前级别开始时间 private int elapsedTime;//当前级别已用时间...

qq_68480660的博客 904

YooAsset可寻址模式避坑指南:从路径加载到Addressable的完整迁移方案

本文详细介绍了将Unity项目从传统路径加载迁移到YooAsset可寻址模式的完整方案。针对中大型项目在迁移过程中遇到的路径耦合、依赖管理、热更新等痛点,提供了从架构设计、环境配置、代码迁移到性能优化的实战指南,并分享了实际项目的改造案例与避坑经验,帮助团队高效完成资源管理系统的重构。

weixin_28304023的博客 501

一个面向对象的打字游戏“QuickHit”程序(附源码)

QuickHit游戏考验玩家从键盘输入内容的准确率和速度。根据输入速率和正确率将关卡设置成6个级别,玩家从一级开始,根据输入内容的准确性和速度逐级升级,级别越高,一次显示(要求输入的内容)也就越多,每关要求的规定时间也有所变动,即逐级每关更难,相应的每关的积分也更多。如果玩家在规定时间内完成规定次数输出,且正确率达标(这里只要输错便退出)则晋级。

jojo_oulaoula的博客 722

HttpClient vs OkHttpClient:哪个更适合你的Java项目?(附性能对比实测)

本文深度对比了Apache HttpClient与OkHttpClient在Java项目中的性能表现与适用场景。通过实际性能测试,OkHttp在连接复用、高并发吞吐量及内存占用方面表现更优,尤其适合现代微服务与Spring生态。HttpClient则凭借其高度可配置性,在需要精细控制HTTP协议细节的场景中更具优势。文章提供了清晰的选型指南,帮助开发者根据项目需求做出最佳决策。

onion的博客 508

01-SA8155 QNX 虚拟机Hypervisor

Hypervisor运行在Host OS操作系统上,其他操作系统均在Hypervisor上运行。:Hypervisor直接运行在硬件上,操作系统在Hypervisor之上运行。终止(关闭):echo control 0 dev/vmm。路径:qnx_ap/AMSS/platform/vm/resources/关闭/终止 qvm(GVM):slay -s SIGQUIT qvm。", //host PVM --- 主机。不直接操作/dev/vmm 实现关闭,启动vm。

静虚待令,有物混成 1万+

java quickhit项目_JavaOOP QuickHit项目分析

项目需求:游戏等级6级,随机字符串每级长度不同。每升一级减少比较次数,但是字符串长度相应增加!每级总分数不同,如果游戏中途输入错误则游戏退出!玩家每次在规定时间内输入字符串的同时,打印出游戏难度等级、当年难度下的游戏积分、输出用时。根据需求抽象出三个类:Game、Player、Level.Level类:public class Level {private int levelNo;// 各级别编号...

weixin_31986143的博客 224

【近源攻击】badusb制作

BadUSB是利用伪造HID设备执行攻击载荷的一种攻击方式。HID(Human InterfaceDevice)设备通常指的就是键盘鼠标等与人交互的设备,用户插入BadUSB,就会自动执行预置在固件中的恶意代码。BadUsb插入后,会模拟键盘鼠标对电脑进行操作,通过这些操作打开电脑的命令终端,并执行一条命令,这条命令将从指定网址下载其他代码并于后台静默运行。这些代码功能包括:窃取信息、反弹shell、发送邮件等,从而实现控制目标机或者窃取信息的目的。

qinjilll的博客 2549

实战项目——QuickHit

任务描述 1.根据输入速率和正确率将玩家分为不同级别 2.级别越高,一次显示的字符数越多,玩家正确输入一次的得分也越高 3.规定时间内完成规定次数的输入,正确率达到规定要求,则升级       玩家最高级别为6级、初始级别一律为1级 4.用户错误输入一次,游戏结束 分析 1.玩家类:级别、当前级别时间、姓名、得分,玩游戏() 2.级别:字符数、得分、次数、规定时间、级别号 3.6个级别的常量: 4.游戏类:玩家,生成字符()、玩游戏() 流程控制: &

timicai的博客 670

智能硬件产品:做好一款电子硬件产品,工具必不可少

上到战略规划,中至运营策略,下至人性洞察,。最初做产品时,笔者从一开始就陷入到了对工具的痴迷,包括:PS、AutoCAD、PROE、犀牛、Axure、Keyshot、Altium……大概将 2 个多月的时间和精力都消耗在了学习使用工具上。通过工具的运用也确实提高了工作效率,在仅有创意的前提下通过灵活运用工具,一年内便成功申请了多个实用新型专利、设计了多款产品的高保真原型图等。正在上传…重新上传取消。

产品线负责人 1442

【一 扣子客户案例合集】【 1.1 抖音电商:通过扣子智能体重塑电商服务新体验】

**摘要:**抖音电商借助扣子(Coze)智能体平台重塑客服体验,通过无代码开发、多模态交互和跨平台发布等功能,解决了传统客服高峰期压力大、成本高及响应机械等痛点。智能体采用直接面客与人工监管结合模式,实现高效精准服务,并通过解构流程、模块化设计优化系统架构。其技术优势包括零配置学习、意图识别、情绪感知等,实际应用中显著提升客服效率300%以上,改善用户体验。未来将进一步拓展至商品推荐、直播互动等场景,推动电商服务智能化升级。

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 1569

java quickhit项目_Java Quick Hit项目

需求概述1.根据输入速率和正确率将玩家分为不同级别2.级别越高,一次显示的字符数越多,玩家正确输入一次的得分也越高3.规定时间内完成规定次数的输入,正确率达到规定要求,则升级(玩家最高级别为6级,初始级别一律为1级)4.用户错误输入一次,游戏结束问题分析一:需要使用的类发现类1.玩家(Player)类2.游戏(Game)类3.级别(Level)类发现类的属性1.玩家类(Player)的属性a.玩家...

weixin_42463480的博客 384

ComfyUI 汉化教程(中文界面)

如果你对翻译的结果不满意,还可以进行修改。首先,进入目录,可以看到该目录中有很多 JSON 文件:打开 JSON 文件,找到要修改的内容,修改对应的Value值即可:最后,重启 ComfyUI 即可。

水滴的博客 1万+

大数据——项目实战之QuickHit游戏

QuickHit项目需求项目环境准备项目覆盖的技能点难点分析需要用到的类 项目需求 QuickHit游戏考验学员键盘输入内容的速度和正确率。 根据输入速率和正确率将玩家分为不同级别,级别越高,一次显示的字符数越多,玩家正确输入一次的得分也越高。如果玩家在规定时间内完成规定次数的输入,正确率达到规定要求,则玩家升级(为了简单起见,规定用户只要输入错误一次,则游戏结束)。玩家最高级别为6级,初始级别一律为一级。 项目环境准备 完成QuickHit,对于开发环境要求如下: 开发工具:MyEclipse 10或In

蜂蜜柚子加苦茶 1630

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

QuickHit项目——Java实现

文章目录项目分析代码实现项目总结 项目分析 QuickHit 游戏考验你键盘输入的速度和准确性。 根据输入速度和正确率将玩家分为不同级别,级别越高,一次显示的字符数就越多,玩家 正确输入一次的得分也越高。如果玩家在规定时间内完成规定次数的输入,正确率达到 规定要求,则玩家升级(为了简单起见,规定用户错误输入一次,游戏结束)。玩家最 高级别为六级,初始级别一律为一级 QuickHit游戏的设计主要是...

云祁QI 1751

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【Java】QuickHit游戏

在main()方法中创建Play类对象,调用play()方法,并“开始游戏”。System.out.println("开始游戏");}}System.out.println("开始游戏");}}今天的项目是第一次写万字博客,虽然项目很简单,但是,是我第一次非常非常认真做的一个小游戏,希望大家多多支持!!!

swy2560666141的博客 1194

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

QuickHit项目

QuickHit项目项目需求案例覆盖的技能点项目实现思路 项目需求 QuickHit游戏考验学员键盘输入内容的速度和准确性。一次显示的字符数越多,级别越高,根据输入速率和正确率将玩家分为不同级别,在规定时间内完成规定次数的输入,正确率高的玩家正确输入一次的得分也越高。如果玩家在规定时只要输入错误次,则游戏结束。达到规定要求,则玩家升级(为了简单起见,规定用户只玩家最高级别为6级,初始级别一律为 一级)。 案例覆盖的技能点 ➢面向对象程序设计的思想。 ➢使用类图理解类的关系。 ➢类的封装。 ➢构造方法的使用。

sanjiang521的博客 584

QuickHit源码

QuickHit这个项目是《Java面向对象程序开发及实战》 课工场出品 ISBN 978-7-115-47399-8 一书的第十章,综合实战。 整个项目分为4个类: Player 玩家类 Level 等级类 LevelParam 等级参照类 Game ...

damo01的博客 580

QuickHit游戏开发项目总结

在此之前已经学过了面向对象的三大特性,即封装,继承,多态,学习了接口的应用,下面是完成的一个游戏项目,这个QuickHit游戏考验的是你的键盘输入速度和准确性,根据输入速度和正确率将玩家分为不同的等级,级别越高一次显示的字符串就越多,玩家正确输入一次的得分也就越高,如果玩家在规定的时间内完成规定的次数,正确率达到规定的要求,那么玩家升级,玩家级别最高为六级,初始级别为一级。 根据要求我们可以分析

LS1910831673的博客 2541

<Zhuuu_ZZ>面向对象及项目QuickHit

一.面向对象总结 面向对象: 类与对象的关系:类是对象的抽象,对象是类的实现 类是由属性和方法构成,它的每一个对象都有对应的属性和方法 方法: 方法的重载: 目的:针对同一个行为的多种表现,对应相同方法名的多个方法 特点: 方法名相同,参数列表不同 类方法(static方法) 类名.方法名() 封装:保护属性值不被随意修改 私有化属性并提供getter,setter对外接口 继承:代码重用,是多态的基础 extends关键字 默认的根类是Object,单根继承 方法的重写: 有继承关系 方法名相同,参数列表

Zhuuu_ZZ的博客 378

项目实战:QuickHit

面向对象设计的思想使用类图理解类的关系类的封装构造方法的使用this、static关键字的使用在main()方法中创建Play类对象,调用play()方法,开始游戏。

qq_45734913的博客 1533

项目:QuickHit

项目分析: QuickHit 游戏考验你键盘输入的速度和准确性。 根据输入速度和正确率将玩家分为不同级别,级别越高,一次显示的字符数就越多,玩家 正确输入一次的得分也越高。如果玩家在规定时间内完成规定次数的输入,正确率达到 规定要求,则玩家升级(为了简单起见,规定用户错误输入一次,游戏结束)。玩家最 高级别为六级,初始级别一律为一级 QuickHit游戏的设计主

PFang617的博客 1722

java quickhit项目_[Java教程]【QuickHit项目实例】

[Java教程]【QuickHit项目实例】0 2016-10-18 15:55:40关于java面向对象QuickHit项目实例Game类:用来得到随机出现的字符串(随机打印的字符串,然后玩家进行输入字符串)public class Game {private String sbString;Random random = new Random();public String pl...

weixin_36380427的博客 462

java quickhit项目_【QuickHit项目实例】

标签:关于java面向对象QuickHit项目实例Game类:用来得到随机出现的字符串(随机打印的字符串,然后玩家进行输入字符串)public class Game {private String sbString;Random random = new Random();public String player(int level) {sbString="";for (int i = 0; i ...

weixin_31470259的博客 586

QuickHit游戏

在游戏类的printResult(String out,String in)方法中,输出相应结果时肯定会涉及玩家类的信息,如当前级别编号、当前级别积分、当前级别已用时间等,需求中和业务相关的名词主要是游戏、输入速率、玩家、级别、一次显示的字符数、正确输入一次的得分、规定时间、规定次数、超时、玩家的积分和玩家用时等。System.out.println("您已闯关成功,成为绝世高手,恭喜你!如果玩家输入正确且未超时,则输出玩家输入的正确信息(包括级别、积分和用时),并输出玩家当前积分、当前级别和已用时间。

xunmengyinjia的博客 225
上一篇: java中的异常捕获和处理
下一篇: java集合框架(一)
海山的蓝
博客等级 码龄9年 36粉丝 49原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值