跟王老师学Java三大特性(一):案例 QuickHit:需求分析

项目案例:QuickHit:需求分析

主讲教师:王少华   QQ群号:483773664

学习目标

学会用面向对象思想来进行需求分析

一、需求

  1. 根据输入速率和正确率将玩家分为不同级别

  2. 级别越高,一次显示的字符数越多,玩家正确输入一次的得分也越高

  3. 规定时间内完成规定次数的输入,正确率达到规定要求,则升级

  4. 玩家最高级别为6级、初始级别一律为1级

  5. 用户错误输入一次,游戏结束

二、面向对象分析

(一) 发现类

  1. 玩家(Player)类

  2. 游戏(Game)类

  3. 级别(Level)类


(二)发现类的属性

1、玩家类(Player)的属性

  • 玩家当前级别号(levelNo)

  • 玩家当前级别积分(currScore)

  • 当前级别开始时间(startTime)

  • 当前级别已用时间(elapsedTime)

跟王老师学Java三大特性(一):案例 QuickHit:需求分析_第1张图片

2级别类(Level)的属性

  • 各级别号(levelNo)

  • 各级别一次输出字符串的长度(strLength)

  • 各级别输出字符串的次数(strTimes)

  • 各级别闯关的时间限制(timeLimit)

  • 各级别正确输入一次的得分(perScore)

跟王老师学Java三大特性(一):案例 QuickHit:需求分析_第2张图片

3 、游戏类(Game)

没有属性,只有方法

(三)发现类行为

1、玩家类(Player)

玩游戏:play()

2 、游戏类

  • String printStr():输出字符串,返回字符串用于和玩家输入比较

  • void printResult(String out,String in):比较游戏输出Out和玩家输入in,根据比较结果输出相应信息

跟王老师学Java三大特性(一):案例 QuickHit:需求分析_第3张图片

(四)优化设计

1 修改游戏类(Game),添加属性

玩家:player

2 添加类 LevelParam:用于存储级别常量

public final static Level level[6]

跟王老师学Java三大特性(一):案例 QuickHit:需求分析_第4张图片

三、游戏Demo的演示

四、类的编写

(一) Player

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Player {
     private int levelNo; // 级别号
     private int curScore; // 当前积分
     private long startTime = 0 ; // 各级别开始时间
     private int elapsedTime; // 各级别已用时间
     
     /**
      * 玩家玩游戏。
      */
     public void play() {
         
     }
}

(二) Level

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Level {
     private int levelNo; // 级别号
     private int strLength; // 各级别一次输出字符串的长度
     private int strTime; // 各级别输出字符串的次数
     private int timeLimit; // 各级别闯关的时间限制
     private int perScore; // 各级别成功输入一次字符串后增加的分值
     /**
      * 构造方法
      */
     public Level(){}
     public Level( int levelNo, int strLength, int strTime, int timeLimit,
             int perScore) {
         this .levelNo = levelNo;
         this .strLength = strLength;
         this .strTime = strTime;
         this .timeLimit = timeLimit;
         this .perScore = perScore;
     }
}

(三)Game

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class Game {
     private Player player; // 玩家
     /**
      * 构造方法
      */
     public Game(){}
     public Game(Player player) {
         this .player = player;
     }
     /**
      * 输出指定级别规定长度的字符串。
      * @return 输出的字符串,用于和用户输入比较
      */
     public String printStr() {
         return "" ;
     }
     /**
      * 判断玩家输入是否正确,并输出相应结果信息。
      * @param out 游戏输出的字符串
      * @param in 玩家输入的字符串
      */
     public void printResult(String out, String in) {
         
     }
}

(四)LevelParam

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
  *
  * @author wangsh
  * @createDate:2016年4月18日
  * 功能描述: 级别参数类,配置各个级别参数。
  */
public class LevelParam {
     public final static Level levels[]= new Level[ 6 ]; //对应六个级别
   
}

五、初始化各级别的参数

(一)、难点提示

1 使用static修饰属性和代码块

  • static属性

属于这个类所有

通过“对象名.static属性名” 、“类名.static属性名” 访问

  • static方法

通过“类名.static方法名”和“对象名.static方法名” 访问

  • static代码块

主要作用是实现static属性的初始化

当类被载入的时候执行它,且只被执行一次

(二)、参考代码

你可能感兴趣的:(color,center,学习目标)