1、先编写级别类Level:
(1)定义属性:
private int levelNo; // 级别号
private int strLength; // 各级别一次输出字符串的长度
private int strTimes; // 各级别输出字符串的次数
private int timeLimit; // 各级别闯关的时间限制
private int perScore; // 各级别成功输入一次字符串后增加的分值
(2)添加包含所有参数的有参构造方法(无参构造方法后面不需要使用,可以不添加)
(3)针对封装好的属性,添加getXxx()方法,不需要添加setXxx()方法(针对级别的属性是系统规定好的,不需要用户设置)
2、编写级别参数类LevelParam:
(1)此项目会涉及到6个级别(每个级别是一个对象),所以先创建一个长度为6,类型为Level的数组,这个数组可以声明为静态常量值
(2)使用有参构造方法创建6个Level类对象,并将这6个对象存储到第一步创建的数组中,可以将这个操作生命在静态代码块中
3、创建Play玩家类:
(1)定义属性:
private int levelNo; // 级别号
private int curScore; // 当前积分
private long startTime = 0; // 各级别开始时间
private int elapsedTime; // 各级别已用时间
(2)添加无参构造方法、有参构造方法、getXxx()/setXxx()方法
(3)定义玩家玩游戏的方法play():
功能:用户由默认0级升级到1级,开始玩游戏(调用Game类里的printStr()方法和printResult())
4、创建游戏类Game:
(1)定义属性:
private Player player;// 玩家
(2)添加无参构造方法、有参构造方法
(3)定义方法printStr()
功能:根据用户级别输出指定长度的字符串(字符串的内容是随机产生的)
(4)定义方法printResult()
功能:判断用户输入的字符串与系统随机产生的字符串内容是否相同
1)如果用户输入的字符串与系统产生的字符串相同:
--》用户输入字符串的时间>对应级别需要的时间:超时,退出游戏系统
--》用户输入字符串的时间<对应级别需要的时间:
计算用户完游戏的时间
用户玩游戏积累的积分
输出当前用户所处的级别,玩游戏时间、积累的积分
计算该游戏最后一个级别的总分并判断用户是否到达第六级别以及积累的积分是否等于最高级别的积分,如果满足,输出闯关成功
2)如果用户输入的字符串与系统产生的字符串相同:
直接退出游戏系统
5、定义测试类:
在main()方法中创建Play类对象,调用play()方法,开始游戏
6.代码部分
1、先编写级别类Level:
(1)定义属性:
private int levelNo; // 级别号
private int strLength; // 各级别一次输出字符串的长度
private int strTimes; // 各级别输出字符串的次数
private int timeLimit; // 各级别闯关的时间限制
private int perScore; // 各级别成功输入一次字符串后增加的分值
(2)添加包含所有参数的有参构造方法(无参构造方法后面不需要使用,可以不添加)
(3)针对封装好的属性,添加getXxx()方法,不需要添加setXxx()方法(针对级别的属性是系统规定好的,不需要用户设置)
2、编写级别参数类LevelParam:
(1)此项目会涉及到6个级别(每个级别是一个对象),所以先创建一个长度为6,类型为Level的数组,这个数组可以声明为静态常量值
(2)使用有参构造方法创建6个Level类对象,并将这6个对象存储到第一步创建的数组中,可以将这个操作生命在静态代码块中
3、创建Play玩家类:
(1)定义属性:
private int levelNo; // 级别号
private int curScore; // 当前积分
private long startTime = 0; // 各级别开始时间
private int elapsedTime; // 各级别已用时间
(2)添加无参构造方法、有参构造方法、getXxx()/setXxx()方法
(3)定义玩家玩游戏的方法play():
功能:用户由默认0级升级到1级,开始玩游戏(调用Game类里的printStr()方法和printResult())
4、创建游戏类Game:
(1)定义属性:
private Player player;// 玩家
(2)添加无参构造方法、有参构造方法
(3)定义方法printStr()
功能:根据用户级别输出指定长度的字符串(字符串的内容是随机产生的)
(4)定义方法printResult()
功能:判断用户输入的字符串与系统随机产生的字符串内容是否相同
1)如果用户输入的字符串与系统产生的字符串相同:
--》用户输入字符串的时间>对应级别需要的时间:超时,退出游戏系统
--》用户输入字符串的时间<对应级别需要的时间:
计算用户完游戏的时间
用户玩游戏积累的积分
输出当前用户所处的级别,玩游戏时间、积累的积分
计算该游戏最后一个级别的总分并判断用户是否到达第六级别以及积累的积分是否等于最高级别的积分,如果满足,输出闯关成功
2)如果用户输入的字符串与系统产生的字符串相同:
直接退出游戏系统
5、定义测试类:
在main()方法中创建Play类对象,调用play()方法,开始游戏
1、先编写级别类Level:
(1)定义属性:
private int levelNo; // 级别号
private int strLength; // 各级别一次输出字符串的长度
private int strTimes; // 各级别输出字符串的次数
private int timeLimit; // 各级别闯关的时间限制
private int perScore; // 各级别成功输入一次字符串后增加的分值
(2)添加包含所有参数的有参构造方法(无参构造方法后面不需要使用,可以不添加)
(3)针对封装好的属性,添加getXxx()方法,不需要添加setXxx()方法(针对级别的属性是系统规定好的,不需要用户设置)
2、编写级别参数类LevelParam:
(1)此项目会涉及到6个级别(每个级别是一个对象),所以先创建一个长度为6,类型为Level的数组,这个数组可以声明为静态常量值
(2)使用有参构造方法创建6个Level类对象,并将这6个对象存储到第一步创建的数组中,可以将这个操作生命在静态代码块中
3、创建Play玩家类:
(1)定义属性:
private int levelNo; // 级别号
private int curScore; // 当前积分
private long startTime = 0; // 各级别开始时间
private int elapsedTime; // 各级别已用时间
(2)添加无参构造方法、有参构造方法、getXxx()/setXxx()方法
(3)定义玩家玩游戏的方法play():
功能:用户由默认0级升级到1级,开始玩游戏(调用Game类里的printStr()方法和printResult())
4、创建游戏类Game:
(1)定义属性:
private Player player;// 玩家
(2)添加无参构造方法、有参构造方法
(3)定义方法printStr()
功能:根据用户级别输出指定长度的字符串(字符串的内容是随机产生的)
(4)定义方法printResult()
功能:判断用户输入的字符串与系统随机产生的字符串内容是否相同
1)如果用户输入的字符串与系统产生的字符串相同:
--》用户输入字符串的时间>对应级别需要的时间:超时,退出游戏系统
--》用户输入字符串的时间<对应级别需要的时间:
计算用户完游戏的时间
用户玩游戏积累的积分
输出当前用户所处的级别,玩游戏时间、积累的积分
计算该游戏最后一个级别的总分并判断用户是否到达第六级别以及积累的积分是否等于最高级别的积分,如果满足,输出闯关成功
2)如果用户输入的字符串与系统产生的字符串相同:
直接退出游戏系统
5、定义测试类:
在main()方法中创建Play类对象,调用play()方法,开始游戏
public class Levelparam {
// (1)此项目会涉及到6个级别(每个级别是一个对象),
// 所以先创建一个长度为6,
// 类型为Level的数组,这个数组可以声明为静态常量值
public final static Level levels[]= new Level[6];
static{
levels[0]=new Level(1, 2, 10, 20, 2);
levels[1]=new Level(2, 3, 10, 20, 2);
levels[2]=new Level(3, 4, 10, 20, 2);
levels[3]=new Level(4, 5, 5, 20, 2);
levels[4]=new Level(5, 6, 5, 20, 2);
levels[5]=new Level(6, 7, 5, 20, 2);
//级别 字符串长度 输入次数 时间限制 积分累加
}
}
import java.util.Scanner;
public class Player {
// (1)定义属性:
private int levelNo; // 级别号
private int curScore; // 当前积分
private long startTime = 0; // 各级别开始时间
private int elapsedTime; // 各级别已用时间
public Player() {
super();
}
public Player(int levelNo, int curScore, long startTime, int elapsedTime) {
super();
this.levelNo = levelNo;
this.curScore = curScore;
this.startTime = startTime;
this.elapsedTime = elapsedTime;
}
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;
}
//玩家玩游戏方法
public void play(){
Game game = new Game(this); //表示player对象 谁调用 给谁
Scanner sc = new Scanner(System.in);
//外层 循环一次 级别进一级
for(int i = 0;i<Levelparam.levels.length;i++){
//晋级
this.levelNo+=1;
// System.out.println(this.levelNo);
//晋级后 计时清零 积分清零
this.startTime = System.currentTimeMillis();
this.curScore= 0;
//内层循环 循环一次 字符串输出 输入比较
for(int j =0;j<Levelparam.levels[levelNo-1].getStrTimes();j++){
//输出游戏字符串
String outStr= game.printStr();
//接收用户输入
String inStr = sc.next();
game.printResult(outStr,inStr);
}
}
System.out.println("玩家--------->");
}
public int getTimeLimit() {
// TODO Auto-generated method stub
return 0;
}
}
public class Test {
public static void main(String[] args) {
Player pl = new Player();
pl.play();
}
}