package com.game.dance;
/**
* 裁判类
*/
public class Judge {
String[] resultString = new String[]{"太完美了","加油","要小心了"};
int resultLevel = 0; //结果级别,resultString的索引
long curTime = System.currentTimeMillis();//当前时间
int hitCount = 0; //命中次数
int missCount = 0; //错误次数
int totalCount = 0; //总共次数
int MAX_SEC = 10; //每关的时间限制
int MAX_MISS_COUNT = 4; //所以关一共允许的失败次数
/**
* 判断输入是否正确,是否超过限制次数,是否超时
* @pramati curData 游戏要求输入的内容
* @pramati curInput 玩家实际输入的内容
* @return 评判结果
*/
public String judge(String curData,String curInput){
String ret ="";
if(null != curInput && !"".equals(curInput)){
/*如果输入不为空,也不为空字符串*/
curInput = curInput.replaceAll("w", "↑");
curInput = curInput.replaceAll("s", "↓");
curInput = curInput.replaceAll("a", "←");
curInput = curInput.replaceAll("d", "→");
if(curData.equals(curInput)){
/*如果输入正确,增加一次命中次数*/
ret = "[正确]";
hitCount += 1;
}else{
/*如果输入错误,增加一次错误次数*/
ret = "[错误]";
missCount += 1;
}
totalCount+=1;
/*判断是否超时*/
if(missCount > MAX_MISS_COUNT){
//超过限制次数则放回失败信息,游戏停止
System.out.println("\n你失败了!你错了"+missCount+ "次,最多"+MAX_MISS_COUNT+"次");
return "fail";
}
/*计算已用时间,并判断是否超时*/
long secPassd = (System.currentTimeMillis()-curTime)/1000;
if(secPassd>MAX_SEC){
//超时则放回失败信息,游戏停止
System.out.println("\n你失败了!"+secPassd+ "秒过去了,最多"+MAX_SEC+"秒");
return "fail";
}
}
return ret; //返回【正确】或【错误】信息
}
/**
* 得到结果
* @return
*/
public String getResult(){
resultLevel = missCount;
resultLevel = (resultLevel > 2)?2:resultLevel;
return "总共:"+ totalCount +"\t命中:"+ hitCount + "\t["
+ resultString[resultLevel]+"]";
}
}