QuickHit

    xiaoxiao2021-12-14  21

    需求概述: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(); } }
    转载请注明原文地址: https://ju.6miu.com/read-968860.html

    最新回复(0)