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 = 0; i < LevelParam.levels.length; i++) {
this.levelNo+=1;
//晋级后,记时清零,积分清零
this.startTime=System.currentTimeMillis();
this.curScore=0;
//内层循环,循环一次完成一次字符串的输出,输入,比较。它的限制参数是输出字符串的次数
for (int j = 0; j <LevelParam.levels[levelNo-1].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()-1].getStrLength();
StringBuffer buffer=new StringBuffer();
Random random=new Random();
for (int i = 0; i < strLength; i++) {
int rand=random.nextInt(strLength);
switch (rand) {
case 0:
buffer.append(">");
break;
case 1:
buffer.append("<");
break;
case 2:
buffer.append("*");
break;
case 3:
buffer.append("&");
break;
case 4:
buffer.append("*");
break;
case 5:
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()-1].getTimeLimit();
if ((currentTime-player.getStartTime())/1000>closeTime) {
System.out.println("你输入的太慢了,已经超时,退出!");
System.exit(1);
}
else
{
//计算当前玩家积分
//所有的积分相加
player.setCurScore(player.getCurScore()+LevelParam.levels[player.getLevelNo()-1].getPerScore());
int score=player.getCurScore();//获取数组内的开始积分
int time=(int)(currentTime-player.getStartTime())/1000;//获取时间差
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(1);
} }
}
public class LevelParam {
public final static Level levels[]=new Level[6];
static{
levels[0]=new Level(1,2,10,30,1);
levels[1]=new Level(2,3,9,26,2);
levels[2]=new Level(3,4,8,22,5);
levels[3]=new Level(4,5,7,18,8);
levels[4]=new Level(5,6,6,15,10);
levels[5]=new Level(6,7,5,12,15);
}
}
public class Test {
public static void main(String[] args) {
Player player=new Player();
player.play();
}
}
QuicKHit的更多相关文章
- 【QuickHit项目实例】
关于java面向对象QuickHit项目实例 Game类:用来得到随机出现的字符串(随机打印的字符串,然后玩家进行输入字符串) public class Game { private String s ...
- QuickHit游戏
一 项目需求 根据输入速率和正确率将玩家分为不同级别,级别越高,一次显示的字符数越多,玩家正确输入一次的得分也越高.如果玩家在规定时间内完成规定次数的输入,正确率达到规定要求,则玩家升级(为了简单起见 ...
- 第五章项目:QuickHit
需求概述: 根据输入速率和正确率将玩家分为不同级别,级别越高,一次显示的字符数越多,玩家正确输入一次的得分也越高.如果玩家在规定时间内完成规定次数的输入,正确率达到规定要求,则玩家升级(为了简单起见, ...
- QuickHit项目(输出字符串游戏)
public class leve { private int leveNo; private int strLength; private int strTimes; private int tim ...
- QuickHit快速击键小程序 --S2.4.5
我们现在要做一个项目 一个小小的程序 叫做快速击键 很明了的目的 就是在规定时间内,每次出现一组字母的组合,这个字母只能在DFJK中生成 然后输入相应的文字,按回车 自动判断输入的是否正确 在规定时间 ...
- 快速击键(MyEclipse编写的QuickHit项目)
public class Level { private int levelNo;// 各级别编号 private int strLength;// 各级别一次输出字符串的长度 private int ...
- 05章项目: QuickHit快速击键
一.项目分析 根据输入速率和正确率将玩家分为不同等级,级别越高,一次显示的字符数越多,玩家正确输入一次的得分也越高.如果玩家在规定时间内完成规定次数的输入,正确率达到规定要求,则玩家升级.玩家最高级别 ...
- JavaOOP QuickHit项目分析
项目需求:游戏等级6级,随机字符串每级长度不同.每升一级减少比较次数,但是字符串长度相应增加!每级总分数不同,如果游戏中途输入错误则游戏退出!玩家每次在规定时间内输入字符串的同时,打印出游戏难度等级. ...
- Quickhit快速击键
一.项目分析 根据输入速率和正确率将玩家分为不同等级,级别越高,一次显示的字符数越多,玩家正确输入一次的得分也越高.如果玩家在规定时间内完成规定次数的输入,正确率达到规定要求,则玩家升级.玩家最高级别 ...
随机推荐
- .deb包的安装方法
deb是Debian linux的安装格式,跟redhat的rpm非常相似,最基本的安装命令是: dpkg -i file.deb dpkg是Debian Package的简写,是为Debian专门开 ...
- Note3 :《集体智慧编程》用户相似度计算
欧几里德距离评价: 以经过人们一致评价的物品为坐标轴,然后将参与评价的人绘制到图上,并考察他们彼此之间的距离远近.计算出每一轴向上的差值,求平方之后再相加,最后对总和取平方根. # -*- codin ...
- 【Java EE 学习 36】【struts2】【struts2系统验证】【struts2 ognl值栈】【struts2 ongl标签】【struts2 UI标签】【struts2模型驱动和令牌机制】
一.struts2系统验证 1.基于struts2系统验证的方式实际上就是通过配置xml文件的方式达到验证的目的. 2.实际上系统校验的方法和手工校验的方法在底层的基本实现是相同的.但是使用系统校验的 ...
- WinForm 与WPF 窗体之间的想到调用
先放置一个容器控件,并设计 好WinForm(或WPF)窗口 winform 调用 wpf ElementHost el = new ElementHost(); el.Dock = DockStyl ...
- 【MyEcplise】build workspace卡死
1.window-Perferences-MyEclipse-Validation 将Manual全部勾掉,Build只留Classpath DependencyValidator,其它全部勾掉. 2 ...
- 分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)
本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...
- asp.net 数据库面试题(基础)
今天到某公司笔试,数据库考的比较多,但是说老实话,考的也比较基础.现在趁回忆得起来,将数据库知识简单整理如下: 一.建表指令 比如创建一个学生表student,它由学号Sno,姓名Sname,性别Ss ...
- Shell 编程基础之 && 与 ||
一.引言 Shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 $? 中.当 $? == 0 时,表示执行成功:当 $? == 1 时,表示执行失败.有时候,下一条命令 ...
- 【BZOJ4008】[HNOI2015]亚瑟王 期望
[BZOJ4008][HNOI2015]亚瑟王 Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最 ...
- [转]webpack进阶构建项目(一)
阅读目录 1.理解webpack加载器 2.html-webpack-plugin学习 3.压缩js与css 4.理解less-loader加载器的使用 5.理解babel-loader加载器 6.理 ...