package Accp;
public class Judge {
String[] resultString=new String[]{"太完美了","加油","要小心了 "};
int resultLevel=0;//结果级别,resrltString的索引
long curTime=System.currentTimeMillis();//当前时间
int hitCount=0;//命中次数
int missCount=0;//错误次数
int totalCount=0;//总共次数
int MAX_SEC=10;//每关的时间限制
int MAX_MISS_COUNT=4;//所有关一共允许的失败次数
/**
* 判断输入是否正确,是否超过限制次数,是否超时
* @param curData 游戏要求的输入内容
* @param 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;
}
}else{
/*
* 如果输入为空,或为空字符串,增加一次错误次数
*/
ret="[错误]";
missCount+=1;
}
totalCount=1;
/*
* 判断是否超过次数
*/
if(missCount>MAX_MISS_COUNT){
//超过限制次数则放回失败信息,游戏停止
System.out.println("\n 你失败了!你错了"+missCount+"次(最多"+MAX_MISS_COUNT+"次)");
return "fail";
}
/*
* 计算已用时间,并判断是否超时
*/
long secPassed=(System.currentTimeMillis()-curTime)/1000;
if(secPassed>MAX_SEC){
//超时则放回失败信息,游戏停止
System.out.println("\n 你失败了!"+secPassed+"秒过去了(最多"+MAX_SEC+"秒)");
return "fail";
}
return ret;//返回[正确]或[错误]信息
}
/**
* 得到结果
* @return
*/
public String getResult(){
resultLevel=missCount;
resultLevel=(resultLevel>2)?2:resultLevel;
return "总共:"+totalCount+"\t命中:"+hitCount+"\t["
+resultString[resultLevel]+"]";
}
}