快速击键(MyEclipse编写的QuickHit项目)
public class Level {
private int levelNo;// 各级别编号
private int strLength;// 各级别一次输出字符串的长度
private int strTimes;// 各级别输出字符串的次数
private int timeLimit;// 各级别闯关的时间限制
private int perScore;// 各级别正确输入一次的得分
public int getLevelNo() {
return levelNo;
}
public void setLevelNo(int levelNo) {
this.levelNo = levelNo;
}
public int getStrLength() {
return strLength;
}
public void setStrLength(int strLength) {
this.strLength = strLength;
}
public int getStrTimes() {
return strTimes;
}
public void setStrTimes(int strTimes) {
this.strTimes = strTimes;
}
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() {
super();
}
public Level(int levelNo, int strLength, int strTimes, int timeLimit,
int perScore) {
super();
this.levelNo = levelNo;
this.strLength = strLength;
this.strTimes = strTimes;
this.timeLimit = timeLimit;
this.perScore = perScore;
}
}
import java.util.Scanner; /**
* 玩家类
* @author accp
*
*/
public class Player {
private int levelNo; //等级
private int curScore; //积分
private int elapsedTime; //已用时间
private long startTime; //开始时间 public Player() { } public Player(int levelNo, int curScore, int elapsedTime, long startTime) { this.levelNo = levelNo;
this.curScore = curScore;
this.elapsedTime = elapsedTime;
this.startTime = startTime;
} public int getLevelNo() {
return levelNo;
}
public void setLevelNo(int levelNo) {
this.levelNo = levelNo;
}
public int getCurScore() {
return curScore;
}
public void setCurScore(int curScore) {
this.curScore = curScore;
}
public int getElapsedTime() {
return elapsedTime;
}
public void setElapsedTime(int elapsedTime) {
this.elapsedTime = elapsedTime;
}
public long getStartTime() {
return startTime;
}
public void setStartTime(long startTime) {
this.startTime = startTime;
} public void play()
{
Game game=new Game(this);//this代表已经创建了的对象引用player
//外层循环,循环一次级别进一级
for (int i = ; i < LevelParam.levels.length; i++) {
this.levelNo+=;
//晋级后,记时清零,积分清零
this.startTime=System.currentTimeMillis();
this.curScore=;
//内层循环,循环一次完成一次字符串的输出,输入,比较。它的限制参数是输出字符串的次数
for (int j = ; j <LevelParam.levels[levelNo-].getStrTimes(); j++) {
String outstr=game.printStr();//游戏输出字符串
System.out.println(outstr);
Scanner input=new Scanner(System.in);
String instr=input.next();
game.printResult(outstr, instr);
} }
}
}
import java.util.Date;
import java.util.Random; /**
* 游戏类
* @author accp
*
*/ public class Game {
private Player player; public Game() { } public Game(Player player) {
this.player = player;
} public Player getPlayer() {
return player;
} public void setPlayer(Player player) {
this.player = player;
} //输出字符串用于和玩家的输入进行比较
public String printStr()
{
//获取当前玩家级别的字符串长度
int strLength=LevelParam.levels[player.getLevelNo()-].getStrLength();
StringBuffer buffer=new StringBuffer();
Random random=new Random();
for (int i = ; i < strLength; i++) {
int rand=random.nextInt(strLength);
switch (rand) {
case :
buffer.append(">");
break;
case :
buffer.append("<");
break;
case :
buffer.append("*");
break;
case :
buffer.append("&");
break;
case :
buffer.append("*");
break;
case :
buffer.append("#");
break;
default:
break;
} }
String result=buffer.toString();
return result;
}
//比较结果,输出相应信息
public void printResult(String out,String in)
{
if (out.equals(in)) {
//正确输入
Date date=new Date();
long currentTime=date.getTime();
//如果超时
long closeTime=LevelParam.levels[player.getLevelNo()-].getTimeLimit();
if ((currentTime-player.getStartTime())/>closeTime) {
System.out.println("你输入的太慢了,已经超时,退出!");
System.exit();
}
else
{
//计算当前玩家积分
//所有的积分相加
player.setCurScore(player.getCurScore()+LevelParam.levels[player.getLevelNo()-].getPerScore());
int score=player.getCurScore();//获取数组内的开始积分
int time=(int)(currentTime-player.getStartTime())/;//获取时间差
player.setElapsedTime(player.getElapsedTime()+time);
int alltime=player.getElapsedTime();
int no=player.getLevelNo();
System.out.println("输入正确,您的级别"+no+",您的积分"+score+",已用时间"+alltime+"");
}
}else{
System.out.println("输入错误 !!!,退出");
System.exit();
} }
}
public class LevelParam {
public final static Level levels[]=new Level[];
static{
levels[]=new Level(,,,,);
levels[]=new Level(,,,,);
levels[]=new Level(,,,,);
levels[]=new Level(,,,,);
levels[]=new Level(,,,,);
levels[]=new Level(,,,,);
}
}
public class Test {
public static void main(String[] args) {
Player player=new Player();
player.play();
}
}
快速击键(MyEclipse编写的QuickHit项目)的更多相关文章
- QuickHit快速击键小程序 --S2.4.5
我们现在要做一个项目 一个小小的程序 叫做快速击键 很明了的目的 就是在规定时间内,每次出现一组字母的组合,这个字母只能在DFJK中生成 然后输入相应的文字,按回车 自动判断输入的是否正确 在规定时间 ...
- 05章项目: QuickHit快速击键
一.项目分析 根据输入速率和正确率将玩家分为不同等级,级别越高,一次显示的字符数越多,玩家正确输入一次的得分也越高.如果玩家在规定时间内完成规定次数的输入,正确率达到规定要求,则玩家升级.玩家最高级别 ...
- Quickhit快速击键
一.项目分析 根据输入速率和正确率将玩家分为不同等级,级别越高,一次显示的字符数越多,玩家正确输入一次的得分也越高.如果玩家在规定时间内完成规定次数的输入,正确率达到规定要求,则玩家升级.玩家最高级别 ...
- JAVA WEB快速入门之从编写一个基于SpringBoot+Mybatis快速创建的REST API项目了解SpringBoot、SpringMVC REST API、Mybatis等相关知识
JAVA WEB快速入门系列之前的相关文章如下:(文章全部本人[梦在旅途原创],文中内容可能部份图片.代码参照网上资源) 第一篇:JAVA WEB快速入门之环境搭建 第二篇:JAVA WEB快速入门之 ...
- 快速上手php:使用PhpStrom部署项目
闲话 上学的时候一直以为可以专注自己的领域,以为与php无缘的,但是这种想法是错误,在完成任务的时候,你不得不使用你不熟悉的语言或者框架.正所谓业务驱动开发,这次接手已经离职的前辈的留下来的项目,最蛋 ...
- JAVA WEB快速入门之从编写一个JSP WEB网站了解JSP WEB网站的基本结构、调试、部署
接上篇<JAVA WEB快速入门之环境搭建>,在完成了环境搭建后(JDK.Tomcat.IDE),现在是万事具备,就差写代码了,今天就来从编写一个JSP WEB网站了解JSP WEB网站的 ...
- eclipse导入myeclipse中的web项目
场景:在myeclipse编写的一个简单的电信计费系统项目,后面公用到eclipse,想把它给导入到eclipse中 操作:eclipse中在packag explorer空白处右键>impor ...
- 使用MyEclipse编写Java程序
MyEclipse是非常实用的一款Java程序开发工具,主要用于Java.Java EE以及移动应用的开发.MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持相当不错. My ...
- Myeclipse中导入新项目报叹号
Myeclipse中导入新项目报红色叹号 原因是导入项目中,有的jar路径不对, 在上图中,先把报错的jar移除,之后将JRE开头的那个library移除,最后点击add Library,选择jre. ...
随机推荐
- dojo的发展历史
dojo的开始要从2004年初开始说起,那时dojo之父 Alex Russell 在Informatica公司内从事一个名为netWindows的项目,这个项目的目的是在浏览器环境下提供创建窗口化界 ...
- debian(kali Linux) 安装net Core
debian(kali Linux) 安装net Core curl -sSL https://raw.githubusercontent.com/dotnet/cli/rel/1.0.0-previ ...
- JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
开发之前需要考虑系统的差异性,比如ios手机没有回退键,所以在开发时一定要考虑二级界面需要有回退键,否则ios的手机就会陷入到这个页面出不去了.安卓系统有回退键,针对这个情况需要要求用户在3秒钟之内连 ...
- Asp.Net MVC 扩展 Html.ImageFor 方法详解
背景: 在Asp.net MVC中定义模型的时候,DataType有DataType.ImageUrl这个类型,但htmlhelper却无法输出一个img,当用脚手架自动生成一些form或表格的时候, ...
- C# WPF获取任务栏时间区域的Rectangle
[StructLayout(LayoutKind.Sequential)] public struct WindowRect { public int left; public int top; pu ...
- Fatal error: Maximum function nesting level of '100' reached, aborting!
这个问题是由于启用了xdebug,而xdebug默认设置了函数最大嵌套数为100 解决办法: 找到php.ini文件,找到xdebug在最后加上xdebug.max_nesting_level = 5 ...
- 奇怪的BUG
熟语说“常在河边走,哪能不湿鞋”,在现实中我想说:“代码写多了,总会遇到奇怪的bug”,遇到bug不可怕,可怕的是不自己不知道这么解决,有些bug能当时解决,有些在自己知识水平提高后知道如何解决.还有 ...
- Excel快速改变行列的次序
改变行列次序是在Excel中常常需要进行的操作,多数用户的方法是先剪切要调整的行或列,然后选定目标位置,单击菜单“插入”→“剪切单元格”. 事实上,使用键盘来配合的话,改变行列的次序可以更快捷.比 ...
- PHP基础 创建
注意:1.网页文件放在wamp中的www文件下: 2.www文件下不能出现中文: 网页浏览的方法: 1.没有建立站点:localhost/文件所在位置 2.建立站点: (1)站点-新建站点-打开对话框 ...
- Python的闭包
Python的闭包 闭包概念都是一样的,实现机制一样,看看下面的代码是不是和javascript很像 def generate_counter(): cnt = [0] def count_one() ...