QuickHit

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


import java.util.Random;

 import java.util.Scanner;
 class Game {

private Player player;//给定一个玩家
public Game(Player player){
this.player = player;
}
public String printStr(){
int levelNo = player.getLevelNo() - 1;
int strlen = LevelInitial.levelsArr[levelNo].getStrlength();//1.1 获取到当前玩家等级 下对应的字符串长度
    Random random = new Random();//随机数
    StringBuffer buffer = new StringBuffer();//创建一个StringBuffer 对象,用来不断的存储和改变字符串内容

for(int i = 0; i < strlen; i++){
int rand = random.nextInt(strlen);
switch(rand){
case 0:
buffer.append("Q");
break;
case 1:
buffer.append("W");
break;
case 2:
buffer.append("E");
break;
case 3:
buffer.append("R");
break;
case 4:
buffer.append("D");
break;
case 5:
buffer.append("F");
break;

}
}
System.out.println(buffer);
return buffer.toString();
}


public void result(String out, String in){
if(out.equals(in)){ 
long currentTime = System.currentTimeMillis();//2.获取到 开始游戏时的时间戳
if((currentTime - player.getStartTime())/ 1000 <= LevelInitial.levelsArr[player.getLevelNo() -1].getTimeLimit()){
int newScore = player.getScore()+ LevelInitial.levelsArr[player.getLevelNo() -1].getPerScore();
player.setScore(newScore);//设置给玩家, 因为玩家有了新的分数
long time = (currentTime - player.getStartTime())/ 1000;//计算已经用的时间
player.setElapseTime(time);
System.out.println("您的等级是:" + player.getLevelNo() + ", 您的积分是:" + player.getScore() + ", 您的用时为:" + player.getElapseTime() + "秒");
//输出 时间,分数,和等级
if(player.getLevelNo() == 6){
int sum = 0;
for(int j = 0; j < LevelInitial.levelsArr.length; j++ ){ 每个级别的总分
int currentScore = LevelInitial.levelsArr[j].getPerScore() * LevelInitial.levelsArr[j].getStrTime();
//所有级别都通关的总分
    sum += currentScore;    
}    if(player.getScore() == sum){
System.out.println("恭喜通关!!");
System.exit(0);
}
}
}else{
System.out.println("超时,游戏结束!!");
System.exit(1);
}
 }else{ 
   System.out.println("输入错误,游戏结束!!游戏退出!!");
   System.exit(1);

}


}


}
 class Level {
private int levelNo;//级别编号
private int strlength;//当前级别对应的 字符串长度
private int timeLimit;//当前级别对应的输入时间限制要求
private int strTime;//当前级别限制的 次数
private int perScore;//当前级别对应的 分数
public Level(int levelNo, int strlength, int timeLimit, int strTime, int perScore){

this.levelNo = levelNo;
this.strlength = strlength;
this.timeLimit = timeLimit;
this.perScore = perScore;
this.strTime = strTime;
}
public int getLevelNum(){
return this.levelNo;
}
    public int getTimeLimit(){
return this.timeLimit;
}
     public int getStrTime(){
return this.strTime;
}
     public int getStrlength(){
  return this.strlength;
  }
     public int getPerScore(){
  return this.perScore;
  }
}
 class LevelInitial {
public static Level[] levelsArr = new Level[6];
static {//编号,字符段长度,时间限制,次数,分数


levelsArr[0] = new Level(1, 2, 3, 5, 1);
levelsArr[1] = new Level(2, 3, 5, 7, 2);
levelsArr[2] = new Level(3, 4, 5, 3, 5);
levelsArr[3] = new Level(4, 5, 8, 3, 5);
levelsArr[4] = new Level(5, 6, 1, 3, 8);
levelsArr[5] = new Level(6, 7, 1, 3, 9);

}
}
class Player {
private int levelNo;//级别号 当前这个玩家在哪一个级别
private long startTime;//开始游戏的时间
private int score;//积分
private long elapseTime;//每级别游戏的持续时间
public void setLevelNo(int levelNo){

this.levelNo = levelNo;
}
public void setScore(int score){
this.score = score;
}
    public void setStartTime(long time){
this.startTime = time;
}
    public void setElapseTime(long elapse){
   this.elapseTime = elapse;
    }

    public int getLevelNo(){
    return this.levelNo;
    }
    public int getScore(){
    return this.score;
    }
    public long getStartTime(){
      return this.startTime;
    }
    public long getElapseTime(){
      return this.elapseTime;
    }
    
  public void play(){
    Game game = new Game(this);
    Scanner input = new Scanner(System.in);
    for(int i = 0; i < LevelInitial.levelsArr.length; i++){
    levelNo += 1;
    startTime = System.currentTimeMillis();
   
    for(int j = 0; j < LevelInitial.levelsArr[levelNo -1].getStrTime();j++){
   
    String out = game.printStr();
    String in = input.next();
    game.result(out, in);
   
    }
   
    }
   
    }




}
public class GameTest {

public static void main(String[] args){

//创建玩家,玩游戏
Player p = new Player();

p.play();
}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值