quickHit游戏考验的是键盘输入内容的速度和准确性。跟据输入的速率和正确率分为不同的等级,级别越高,显示的字符越多,时间相对比较紧张。
这个案例功能简单,代码量不算很大,采用面向对象的思想可能没有面向过程简单,但这个案例却可以很好的帮我们锻炼我们的面向对象的知识点。
先不要着急写代码,先理清整个业务逻辑。
只要理解了整个业务逻辑,接下来就水到渠成了。
- 确定类,既然玩游戏,那一定有玩家和游戏两个类,一次显示的字符数、字符串长度、正确输入一次的得分、规定时间和规定次数都与当前级别有关,可以抽象出来一个级别类。
- 各个级别的具体参数信息如字符数、字符串长度、正确输入一次的得分、规定时间和规定次数,应该在游戏开始其那就初始化,我们提前把它写好,接下来就不要管他了,这也可以抽出来一个级别初始化类。
- 写代码的时候,可以先把所需要的类都先搭起来,内容可以先不填,先填一些基本的属性,get和set方法,以及一些构造方法,和空方法体。主要就是Game类的print()方法和compara()方法,以及Player类的play()方法比较难写一点。但是理解了业务逻辑,你就会发现其实也就那么回事,只要对代码就好了。
- 在填写代码的时候,我觉得先填写Game类的print()方法和compara()方法,最后在填写Player类的play()方法
- 其实大部分都是快捷键自动生成的,真正需要自己写的就这三个方法体而已。
看代码吧
import java.util.Scanner;
/**
* 玩家类
*/
public class Player {
/**
* 1、当前等级
* 2、当前积分
* 3、已用时间
* 4、开始时间
*/
private int levelNo;
private int curScore;
private int elaspedTime;
private int startTime;
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 int getElaspedTime() {
return elaspedTime;
}
public void setElaspedTime(int elaspedTime) {
this.elaspedTime = elaspedTime;
}
public int getStartTime() {
return startTime;
}
public void setStartTime(int startTime) {
this.startTime = startTime;
}
// 玩游戏
public void play(){
Game game=new Game(this);
Scanner sc=new Scanner(System.in);
/**
* 1、循环等级
* 2、循环输入次数
*/