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. 循序渐进做项目系列(2):最简单的C/S程序——消息异步调用与消息同步调用

    上篇博客 循序渐进做项目系列(1):最简单的C/S程序——让服务器来做加法 实现了一个最简单的C/S程序,即让服务器来做加法.当时为了通俗易懂采用了消息异步调用的方式.今天我们要采用消息同步调用的方式 ...

  2. javascript 设计模式-----工厂模式

    所谓的工厂模式,顾名思义就是成批量地生产模式.它的核心作用也是和现实中的工厂一样利用重复的代码最大化地产生效益.在javascript中,它常常用来生产许许多多相同的实例对象,在代码上做到最大的利用. ...

  3. JAVA RMI例子

    RMI 是java语言的一个RPC框架,本文给出基础例子如下: 1.实现接口: public interface ICalc extends Remote { public int add(int p ...

  4. Ngnice-国内ng学习网站

    今天给angular新手介绍一个国内开源的ng学习网站http://www.ngnice.com/这是由一批ng爱好者在雪狼大叔的带领下共同开发完成,致力于帮助更多的ng新人,他们分别是: ckken ...

  5. 【译】使用newInstance()来实例化fragment

    我最近读到StackOverflow上面关于Fragment实例化的一个问题,觉得挺有趣的. new MyFragment()和MyFragment.newInstance()之间的差别是什么?应该用 ...

  6. Android多线程分析之一:使用Thread异步下载图像

    Android多线程分析之一:使用Thread异步下载图像 罗朝辉 (http://www.cnblogs.com/kesalin) CC 许可,转载请注明出处   打算整理一下对 Android F ...

  7. Linux内核TCP/IP参数分析与调优

    转载于:http://www.itxuexiwang.com/a/liunxjishu/2016/0225/167.html?1456482565 如下图展示的是TCP的三个阶段.1,TCP三次握手. ...

  8. Java-集合练习5

    第五题 (Map)设计Account 对象如下: private long id; private double balance; private String password; 要求完善设计,使得 ...

  9. yar粗略使用记录

    yar是鸟哥(laruence)开发的一个并行的RPC框架.据说sina weibo已经在大规模使用这个框架了.今天初步使用了下,觉得还是挺爽的一个工具. 什么情况适用这个工具呢? 比如一般你有个微博 ...

  10. Atitit attilax总结的对于attilax重要的jsr规范,以及需要增加的jsr规范

    Atitit attilax总结的对于attilax重要的jsr规范,以及需要增加的jsr规范 需要增加的jsr规范1 开发常用的10个规范(jsp etc)1 other开发常用的50个规范1 需要 ...