玩家类:
package QuickHit;import java.util.Scanner;/*** * @author 呵呵* 玩家类**/
public class Player {//当前级别号private int levelNo;//当前级别积分private int currScore;//当前级别开始时间private long startTime=0; //当前级别以用时间private int elapsedTime;public int getLevelNo() {return levelNo;}public void setLevelNo(int levelNo) {this.levelNo = levelNo;}public int getCurrScore() {return currScore;}public void setCurrScore(int currScore) {this.currScore = currScore;}public long getStartTime() {return startTime;}public void setStartTime(long startTime) {this.startTime = startTime;}public int getElapsedTime() {return elapsedTime;}public void setElapsedTime(long l) {this.elapsedTime = (int) l;}public Player(int levelNo, int currScore, long startTime, int elapsedTime) {super();this.levelNo = levelNo;this.currScore = currScore;this.startTime = startTime;this.elapsedTime = elapsedTime;}public Player() {super();// TODO Auto-generated constructor stub}
public void play(){Game game=new Game(this);// game.setPlayer(this);Scanner scanner = new Scanner(System.in);//外层循环代表着等级for (int i = 0;i < LevelParam.levels.length ;i++ ){//玩家晋级levelNo += 1;//获得新的游戏开始时间startTime = System.currentTimeMillis();//每次晋级玩家积分清零currScore = 0;//内层循环代表着每个级别所需要玩的次数for (int j = 0;j < LevelParam.levels[i].getStrTime() ;j++ ){//系统生成的字符串String out = game.printStr();//玩家输入的字符串String in = scanner.next();//比较,产生结果game.printResult(out,in);}}}
}游戏类:
package QuickHit;import java.util.Random;/*** * @author 呵呵 * 游戏类*/
public class Game {private Player player;public Game(Player player) {super();this.player = player;}public String printStr(){//对字符串进行增删改查StringBuffer buffer = new StringBuffer();//创建随机数对象Random random = new Random();//循环生成对应玩家等级长度的字符串for (int i = 0;i < LevelParam.levels[player.getLevelNo() - 1].getStrLength();i++ ){//每次循环就产生一个随机数int rand = random.nextInt(6);//拼接产生随机数所对应的字符串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;}}}//输出所生成的字符串,让玩家可以对应着输入System.out.println(buffer.toString());//返回生成的字符串return buffer.toString();}//对比系统生成的字符串和玩家输入的字符串是否一样public void printResult(String out,String in){if(out.equals(in)){long currentTime=System.currentTimeMillis();//如果超时if((currentTime-player.getStartTime())/1000>LevelParam.levels[player.getLevelNo()-1].getTimeLimit()){System.out.print("你输入太慢了,已经超时,退出!");System.exit(1);//如果没有超时}else {//计算玩家当前积分player.setCurrScore(player.getCurrScore()+LevelParam.levels[player.getLevelNo()-1].getPerScore());//计算玩家以用时间player.setElapsedTime((int) ((currentTime - player .getStartTime()) / 1000)); //输出玩家当前级别,当前积分和以用时间System.out.println("输入正确,您的级别"+player.getLevelNo()+",您的积分"+player.getCurrScore()+",已用时间"+player.getElapsedTime()+"秒");//判断用户是否已经闯过最后一关并处理if(player.getLevelNo()==6){int score=LevelParam.levels[player.getLevelNo() - 1].getPerScore() * LevelParam.levels[player.getLevelNo() - 1].getStrTimes();if(player.getCurrScore()==score){System.out.println("恭喜您,通关成功!");}else{System.out.println("输入错误,退出!");System.exit(0);}} }}else{System.out.println("输入错误");System.out.println("正确的是"+out);System.exit(0);}}}级别类:
package QuickHit;
/*** * @author 呵呵*级别类*/
public class Level {private int levelNo; // 级别号private int strLength; // 各级别一次输出字符串的长度private int strTime; // 各级别输出字符 串的次数private int timeLimit; // 各级别闯关的时间限制private int perScore; // 各级别成功输入一次字符串后增加的分值public Level(int levelNo, int strLength, int strTime, int timeLimit,int perScore) {super();this.levelNo = levelNo;this.strLength = strLength;this.strTime = strTime;this.timeLimit = timeLimit;this.perScore = perScore;}public int getLevelNo() {return levelNo;}public void setLevelNo(int levelNo) {this.levelNo = levelNo;}public int getStrTime() {return strTime;}public void setStrTime(int strTime) {this.strTime = strTime;}public Level() {super();}public int getLeveNo() {return levelNo;}public void setLeveNo(int leveNo) {this.levelNo = levelNo;}public int getStrLength() {return strLength;}public void setStrLength(int strLength) {this.strLength = strLength;}public int getStrTimes() {return strTime;}public void setStrTimes(int strTimes) {this.strTime = 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;}}package QuickHit;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);}}Main方法:
package QuickHit;public class MyMain {/*** @param args*/public static void main(String[] args) {Player player = new Player();player.play();}}
效果图:
