Quickhit

当拿到Quickhit这个小项目的时候,内心是奔溃的,因为看到这个需求,完全不知道怎么入手。如何开始第一步,
根本从这个需求里,完全没办法抽象出所有的类,只知道有个游戏类和玩家类,但通过PDF上的分析,
我又知道了还有两个类,一个是等级类和一个初始化等级数据的一个类。根据PDF上的需求分析,一开始
写出了这个类中的属性和方法,但是具体方法的实现根本不知道怎么去搞,只好硬着头皮往下写,能写一点是一点
最后通过百度才知道了如何去搞这个小项目。
这个项目综合了以前所学的好多知识,通过面向对象思维程序方式来编写这个项目,涉及了循环,数组,字符串等等
好多内容,可以说是一个总结性的项目吧。
通过这个项目发现还有好多小的知识点没有完全掌握,有的想到了,但是不知道如何去运用,这几天会把之前学的
东西再翻一番,过一遍。

import java.util.*;

public class Test {
public static void main(String[] args) {
Player p = new Player();
p.play();
}
}
class Player {
private int levelNo=1;//当前级别
private int curScore=0;//当前积分
private long startTime;//开始时间
private int elapsedTime;//当前级别已用时间
Game game = new Game(this);
Scanner input =new Scanner(System.in);
public void play(){
Level level =LevelParam.levels[this.getlevelNo()-1];
for(int i=0;i<6;i++){
for(int j =0;j<level.getstrTime();j++){
String out = game.printStr();
System.out.println(out);
setstartTime(System.currentTimeMillis());
String in = input.next();
game.printResult(out, in);
System.out.println("第"+this.getlevelNo()+"关,当前得"+getcurScore()+"分,本关耗时"+getelapsedTime()+"秒");
this.setelapsedTime(this.getelapsedTime()+game.printResult(out, in));
}
this.setelapsedTime(0);
this.setlevelNo(this.getlevelNo()+1);
this.setcurScore(0);
}
System.out.println("你已通关,谢谢使用!");
System.exit(-1);
}
public int getlevelNo(){
return levelNo;
}
public void setlevelNo(int levelNo){
this.levelNo=levelNo;
}
public int getcurScore(){
return curScore;
}
public void setcurScore(int curScore){
this.curScore=curScore;
}
public long getstartTime(){
return startTime;
}
public void setstartTime(long startTime){
this.startTime=startTime;
}
public int getelapsedTime(){
return elapsedTime;
}
public void setelapsedTime(int elapsedTime){
this.elapsedTime=elapsedTime;

}
class Game {
private Player player ;
public Game(Player player){
super();
this.player=player;
}
public String printStr(){
String str="";
Level level =LevelParam.levels[player.getlevelNo()-1];
for(int i=0;i<level.getstrLength();i++){
String[] m = {">","<","*","&","%","#"};
int n =(int)(Math.random()*6);
str+=m[n];
}
return str;
}
public int printResult(String out,String in){
Level level =LevelParam.levels[player.getlevelNo()-1];
long currentTime=System.currentTimeMillis();
int time = (int)(currentTime-player.getstartTime())/1000;
if(player.getelapsedTime()<LevelParam.levels[player.getlevelNo()-1].gettimeLimit()){
if(out.equals(in)){
player.setcurScore(player.getcurScore()+level.getperScore());
}else{
System.out.println("输入错误,退出游戏!");
System.exit(-1);
}

}else{
System.out.println("你输入太慢了,已经超时,退出");
System.exit(-1);
}
return time;
}
}
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);
}
}
class Level {
int levelNo;//级别
int strLength;//各级别一次输入字符串长度
int strTime;//各级别输入字符串的次数
int timeLimit;//各级别闯关时间限制
int perScore;//各级别正确输入的得分
public Level(){

}
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 int getstrLength(){
return strLength;
}
public int getstrTime(){
return strTime;
}
public int gettimeLimit(){
return timeLimit;
}
public int getperScore(){
return perScore;
}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值