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项目)的更多相关文章

  1. QuickHit快速击键小程序 --S2.4.5

    我们现在要做一个项目 一个小小的程序 叫做快速击键 很明了的目的 就是在规定时间内,每次出现一组字母的组合,这个字母只能在DFJK中生成 然后输入相应的文字,按回车 自动判断输入的是否正确 在规定时间 ...

  2. 05章项目: QuickHit快速击键

    一.项目分析 根据输入速率和正确率将玩家分为不同等级,级别越高,一次显示的字符数越多,玩家正确输入一次的得分也越高.如果玩家在规定时间内完成规定次数的输入,正确率达到规定要求,则玩家升级.玩家最高级别 ...

  3. Quickhit快速击键

    一.项目分析 根据输入速率和正确率将玩家分为不同等级,级别越高,一次显示的字符数越多,玩家正确输入一次的得分也越高.如果玩家在规定时间内完成规定次数的输入,正确率达到规定要求,则玩家升级.玩家最高级别 ...

  4. JAVA WEB快速入门之从编写一个基于SpringBoot+Mybatis快速创建的REST API项目了解SpringBoot、SpringMVC REST API、Mybatis等相关知识

    JAVA WEB快速入门系列之前的相关文章如下:(文章全部本人[梦在旅途原创],文中内容可能部份图片.代码参照网上资源) 第一篇:JAVA WEB快速入门之环境搭建 第二篇:JAVA WEB快速入门之 ...

  5. 快速上手php:使用PhpStrom部署项目

    闲话 上学的时候一直以为可以专注自己的领域,以为与php无缘的,但是这种想法是错误,在完成任务的时候,你不得不使用你不熟悉的语言或者框架.正所谓业务驱动开发,这次接手已经离职的前辈的留下来的项目,最蛋 ...

  6. JAVA WEB快速入门之从编写一个JSP WEB网站了解JSP WEB网站的基本结构、调试、部署

    接上篇<JAVA WEB快速入门之环境搭建>,在完成了环境搭建后(JDK.Tomcat.IDE),现在是万事具备,就差写代码了,今天就来从编写一个JSP WEB网站了解JSP WEB网站的 ...

  7. eclipse导入myeclipse中的web项目

    场景:在myeclipse编写的一个简单的电信计费系统项目,后面公用到eclipse,想把它给导入到eclipse中 操作:eclipse中在packag explorer空白处右键>impor ...

  8. 使用MyEclipse编写Java程序

    MyEclipse是非常实用的一款Java程序开发工具,主要用于Java.Java EE以及移动应用的开发.MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持相当不错. My ...

  9. Myeclipse中导入新项目报叹号

    Myeclipse中导入新项目报红色叹号 原因是导入项目中,有的jar路径不对, 在上图中,先把报错的jar移除,之后将JRE开头的那个library移除,最后点击add Library,选择jre. ...

随机推荐

  1. 将EnyimMemcached从.NET Core RC1升级至RC2

    .NET Core RC1时project.json中的配置如下: { "version": "3.2.4", "summary": &qu ...

  2. Intellij笔记

    环境 官网: http://www.jetbrains.com/idea/download/ 需要Java的JDK,需要安装 JDK,而不是 JRE! http://www.oracle.com/te ...

  3. 图解集合4:HashMap

    初识HashMap 之前的List,讲了ArrayList.LinkedList,最后讲到了CopyOnWriteArrayList,就前两者而言,反映的是两种思想: (1)ArrayList以数组形 ...

  4. 设计模式之美:Private Class Data(私有类数据)

    索引 意图 结构 参与者 适用性 效果 实现 实现方式(一):实现对初始化数据的封装. 意图 封装类的初始化数据,控制对类的属性的更改,并保持类数据与使用数据的方法间的隔离. Encapsulate ...

  5. Ubuntu Desktop开发生产环境搭建

    Ubuntu Desktop开发生产环境搭建 1   开发生产环境搭建 在本节内容开始前,先定义一下使用场合,没有哪种系统或者设备是万能的,都有它的优点和缺点,能够在具体的使用场景,根据自身的需求来取 ...

  6. ECMAScript 6中的let和const关键词

    ECMAScript 6中多了两个定义变量的关键词,一个是let,另一个是const,后者顾名思义就是常量定义,前者的作用域范围是块级的. 一般写过js的童鞋都知道,同其他语言一样,JS中的变量作用域 ...

  7. Ehcache BigMemory: 摆脱GC困扰

    问题 使用java开源项目经常需要调优jvm,以优化gc.对于gc,如果对象都是短时对象,那么jvm相对容易优化,假如碰上像solr使用自带java cache的项目,那么gc严重受限于cache,因 ...

  8. JavaScript正则表达式下——相关方法

    上篇博客JavaScript 正则表达式上——基本语法介绍了JavaScript正则表达式的语法,有了这些基本知识,可以看看正则表达式在JavaScript的应用了,在一切开始之前,看看RegExp实 ...

  9. Senparc.Weixin.MP SDK 微信公众平台开发教程(十):多客服接口说明

    微信官方的多客服接口原理是通过用户发送的信息,开发者服务器返回一条指定类型的响应信息,使用户的对话状态切换到官方的多客服状态(持续一段时间),这段时间内用户发送的所有信息都不会到达开发者的服务器,而是 ...

  10. Zabbix安装部署

    zabbix服务器端配置:(10.27.98.29服务器端) 1.安装lamp环境 yum -y install autoconf curl-devel gcc gcc-c++ httpd httpd ...