奉天承运,博主诏曰:
项目简介
问题分析
代码参考:
Level 类
public class Level {
private int lvlNo;
private int lvlTime;
private int lvlLength;
private int printcnt;
private int perScore;
public Level(int lvlNo,int lvlTime,int lvlLength,int printcnt,int perScore){
setLvlNo(lvlNo);
setLvlTime(lvlTime);
setLvlLength(lvlLength);
setPrintcnt(printcnt);
setPerScore(perScore);
}
public int getLvlNo() {
return lvlNo;
}
public void setLvlNo(int lvlNo) {
this.lvlNo = lvlNo;
}
public int getLvlTime() {
return lvlTime;
}
public void setLvlTime(int lvlTime) {
this.lvlTime = lvlTime;
}
public int getLvlLength() {
return lvlLength;
}
public void setLvlLength(int lvlLength) {
this.lvlLength = lvlLength;
}
public int getPrintcnt() {
return printcnt;
}
public void setPrintcnt(int printcnt) {
this.printcnt = printcnt;
}
public int getPerScore() {
return perScore;
}
public void setPerScore(int perScore) {
this.perScore = perScore;
}
}
LevelParam 接口
public interface LevelParam {
Level[] LEVELS={
new Level(1,60,3,1,3),
new Level(2,60,4,2,5),
new Level(3,60,5,3,6),
new Level(4,60,6,4,7),
new Level(5,60,6,5,9),
new Level(6,60,8,6,10),
};
}
Player 类
public class Player {
private String name;
private int curScore;
private long StartTime=System.currentTimeMillis();
private long usedTime;
private int curLevel=1;
public void play(){
Game g=new Game();
g.setPlayer(this);
g.run();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getCurScore() {
return curScore;
}
public void setCurScore(int curScore) {
this.curScore = curScore;
}
public long getStartTime() {
return StartTime;
}
public void setStartTime(long startTime) {
StartTime = startTime;
}
public long getUsedTime() {
return usedTime;
}
public void setUsedTime(long usedTime) {
this.usedTime = usedTime;
}
public int getCurLevel() {
return curLevel;
}
public void setCurLevel(int curLevel) {
this.curLevel = curLevel;
}
}
Game 类
public class Game {
private Player p;
private Scanner sc=new Scanner(System.in);
private Player[] rank=new Player[1024];
public Player getPlayer() {
return p;
}
public void setPlayer(Player p) {
this.p = p;
}
public String showStr(){
//展示字符串的方法
int curLevel= p.getCurLevel();
int lvlLength = LevelParam.LEVELS[curLevel - 1].getLvlLength();
String rst="";
for (int i = 0; i <lvlLength ; i++) {
//全小写字母,ASCII范围97~122
int a=(int)(97+Math.random()*26);
char c=(char)a;
rst+=c;
}
System.out.println(rst);
return rst;
}
public void run() {
System.out.println("欢迎来玩");
System.out.println("输入姓名");
String name = sc.next();
p.setName(name);
System.out.println("玩家" + name + "开始游戏");
for (int j = 0; j < 6; j++) {
int curLevel = p.getCurLevel();
//每轮要多少次
int printCnt = LevelParam.LEVELS[curLevel - 1].getPrintcnt();
int limit=LevelParam.LEVELS[curLevel - 1].getLvlTime();
int perScore=LevelParam.LEVELS[curLevel - 1].getPerScore();
for (int i = 0; i < printCnt; i++) {
System.out.println("示例:");
String s= showStr();
System.out.println("请输入");
String input=sc.next();
long curTime=System.currentTimeMillis();
long used=curTime-p.getStartTime();
p.setUsedTime(used);
if (!s.equals(input)) {
System.out.println("输入错误,游戏结束");
System.exit(-1);
}else if(used>limit*1000){
System.out.println("输入超时,游戏结束");
System.exit(-2);
}
// p.setCurScore(p.getCurScore()+perScore);
//根据速度重新计算得分
p.setCurScore(p.getCurScore()+(int)(perScore*1000/used));
System.out.println("输入正确,加积分为"+p.getCurScore()
+"级别"+p.getCurLevel()+"时间"+p.getUsedTime()/1000+"秒");
}
if(p.getCurLevel()==6){
System.out.println("通关");
System.exit(1);
}
p.setCurLevel(p.getCurLevel()+1);//升级
System.out.println("恭喜升级");
p.setStartTime(System.currentTimeMillis());
}
}
public void setRank(){
for (int i = 0; i < rank.length; i++) {
if(rank[i]==null){
//插入
rank[i]=p;
return;
}
}
}
}
Platform 类
public class Platform {
public static void main(String[] args) {
Player p=new Player();
p.play();
}
}
钦此。