码迷,mamicode.com
首页 > 编程语言 > 详细

Java面向对象总复习-QuickHit

时间:2016-07-18 02:36:45      阅读:1598      评论:0      收藏:0      [点我收藏+]

标签:

1、创建玩家级别类Level.java

技术分享
 1 package com.bdqn;
 2 /**
 3  * 1.玩家级别类
 4  * @author pc
 5  *
 6  */
 7 public class Level {
 8     /**
 9      * 级别号
10      */
11     private int levelNo;
12     /**
13      * 各级别一次输出字符串的长度
14      */
15     private int strLength;
16     /**
17      * 各级别输出字符串的次数
18      */
19     private int strTime;
20     /**
21      * 各级别闯关的时间限制
22      */
23     private int timeLimit;
24     /**
25      * 各级别成功输入一次的得分
26      */
27     private int perScore;
28     
29     public Level() {
30     }
31     /**
32      * 有参数构造赋值
33      * @param levelNo 级别号
34      * @param strLength 各级别一次输出字符串的长度
35      * @param strTime 各级别输出字符串的次数
36      * @param timeLimit 各级别闯关的时间限制
37      * @param perScore 各级别成功输入一次的得分
38      */
39     public Level(int levelNo, int strLength, int strTime, int timeLimit,
40             int perScore) {
41         this.levelNo = levelNo;
42         this.strLength = strLength;
43         this.strTime = strTime;
44         this.timeLimit = timeLimit;
45         this.perScore = perScore;
46     }
47     public int getLevelNo() {
48         return levelNo;
49     }
50     public void setLevelNo(int levelNo) {
51         this.levelNo = levelNo;
52     }
53     public int getStrLength() {
54         return strLength;
55     }
56     public void setStrLength(int strLength) {
57         this.strLength = strLength;
58     }
59     public int getStrTime() {
60         return strTime;
61     }
62     public void setStrTime(int strTime) {
63         this.strTime = strTime;
64     }
65     public int getTimeLimit() {
66         return timeLimit;
67     }
68     public void setTimeLimit(int timeLimit) {
69         this.timeLimit = timeLimit;
70     }
71     public int getPerScore() {
72         return perScore;
73     }
74     public void setPerScore(int perScore) {
75         this.perScore = perScore;
76     }
77     
78 
79 }
Level.java

2、游戏级别参数设置类LevelParam.java

技术分享
 1 package com.bdqn;
 2 /**
 3  * 2.游戏级别参数设置
 4  */
 5 public class LevelParam {
 6      //规定游戏级别为6级
 7     public final static Level[] levels=new Level[6];
 8     
 9     //设置各个级别的游戏参数值
10     static{
11         levels[0]=new Level(1, 2, 10, 30, 1);
12         levels[1]=new Level(2, 3, 9, 26, 2);
13         levels[2]=new Level(3, 4, 8, 22, 5);
14         levels[3]=new Level(4, 5, 7, 18, 8);
15         levels[4]=new Level(5, 6, 6, 14, 10);
16         levels[5]=new Level(6, 7, 5, 10, 15);
17     }
18 
19 }
LevelParam.java

3、玩家类Player.java

技术分享
 1 package com.bdqn;
 2 
 3 import java.util.Scanner;
 4 
 5 /**
 6  * 3.玩家类
 7  * @author pc
 8  *
 9  */
10 public class Player {
11     /**
12      * 玩家的级别号
13      */
14     private int levelNo; 
15     /**
16      * 当前积分
17      */
18     private int curScore;
19     /**
20      * 各级别的开始时间
21      */
22     private long startTime=0;
23     /**
24      * 各级别已用时间
25      */
26     private int elapsedTime;
27     public int getLevelNo() {
28         return levelNo;
29     }
30     public void setLevelNo(int levelNo) {
31         this.levelNo = levelNo;
32     }
33     public int getCurScore() {
34         return curScore;
35     }
36     public void setCurScore(int curScore) {
37         this.curScore = curScore;
38     }
39     public long getStartTime() {
40         return startTime;
41     }
42     public void setStartTime(long startTime) {
43         this.startTime = startTime;
44     }
45     public int getElapsedTime() {
46         return elapsedTime;
47     }
48     public void setElapsedTime(int elapsedTime) {
49         this.elapsedTime = elapsedTime;
50     }
51     /**
52      * 玩家玩游戏
53      */
54     public void play(){
55         /**
56          * 玩家玩游戏
57          * this: 本类对象的
58          */
59         Game game=new Game(this);
60         /**
61          * 外层循环一次,内层循环一周
62          * 外层:关数=级别
63          * 内层:每关的里的局数
64          * 循环一次晋级一次,一次通关成功
65          */
66         for (int i = 0; i < LevelParam.levels.length; i++) {
67             //1.玩家记录游戏级别,晋级
68             this.levelNo+=1;
69             
70             //2.晋级后计时清零,积分清零
71             //开始时间=当前系统时间
72             this.startTime=System.currentTimeMillis();
73             this.curScore=0;
74             
75             //3.内层循环,循环一次完成一次字符串的输出、输入,比较
76             for (int j = 0; j < LevelParam.levels[levelNo-1].getStrTime(); j++) {
77                 //3.1 游戏输出字符串
78                 String outStr=game.printStr();
79                 
80                 //3.2 接受用户控制台输入
81                 Scanner input=new Scanner(System.in);
82                 String inStr=input.next();
83                 
84                 //3.3 游戏判断玩家输入是否正确,并输出相应结果
85                 game.printResult(outStr,inStr);
86             }
87             
88         }
89     }
90 }
Player.java

4、游戏类Game.java

技术分享
  1 package com.bdqn;
  2 
  3 import java.util.Random;
  4 
  5 
  6 
  7 public class Game {
  8     /**
  9      *1. 引入玩家类
 10      */
 11     private Player player;
 12      
 13     /**
 14      * 2.游戏被玩家玩
 15      * @param player
 16      */
 17     public Game(Player player) {
 18         this.player=player;
 19     }
 20     /**
 21      * 3.游戏随机输出字符串
 22      * @return 输出的字符串,用于和玩家输入的比较
 23      */
 24     public String printStr() {
 25         //1.获取一次输出的字符串的长度
 26         int strLength=LevelParam.levels[player.getLevelNo()-1].getStrLength();
 27         //2.定义动态拼接字符串的对象
 28         StringBuffer sbf=new StringBuffer();
 29         //3.创建生成随机数的对象
 30         Random random=new Random();
 31         //4.循环拼接生成要输出的字符串
 32         for (int i = 0; i < strLength; i++) {
 33             //4.1 产生随机数
 34             int rand=random.nextInt(strLength);
 35             //4.2 根据随机数拼接字符串
 36             switch (rand) {
 37             case 0:
 38                   sbf.append(">");
 39                 break;
 40             case 1:
 41                  sbf.append("<");
 42                 break;
 43             case 2:
 44                  sbf.append("*");
 45                 break;
 46             case 3:
 47                 sbf.append("&");
 48                 break;
 49             case 4:
 50                 sbf.append("%");
 51                 break;
 52             case 5:
 53                 sbf.append("#");
 54                 break;
 55             }
 56         }
 57         //5.输出字符串
 58         System.out.println(sbf.toString());
 59         
 60         //6.返回字符串用于和玩家输入做对比
 61         return sbf.toString();
 62     }
 63     /**
 64      * 4.游戏判断玩家输入是否正确,并输出相应结果
 65      * @param outStr 游戏打印的输出字符串
 66      * @param inStr  玩家输入的字符串
 67      */
 68     public void printResult(String outStr, String inStr) {
 69         //1.输入正确
 70         if(outStr.equals(inStr)){ 
 71              //1.1 获取当前系统时间(毫秒为单位)
 72             long currentTime=System.currentTimeMillis();
 73             //1.2游戏时间=当前时间-开始时间(秒)
 74             long palytime=(currentTime-player.getStartTime())/1000;
 75             //1.3游戏规定的时间限制
 76             long limitTime=LevelParam.levels[player.getLevelNo()-1].getTimeLimit();
 77             //1.4判断游戏是否超时 
 78             if(palytime>limitTime){
 79                 //1.4.1 超时
 80                   System.out.println("你输入太慢,已经超时,退出!!");
 81                   System.exit(1);
 82               }else{ 
 83                   //1.4.2 没有超时
 84                   //1.4.2.1 计算当前积分=原来积分+当前等级游戏积分
 85                   //原来积分
 86                   int currentScore=player.getCurScore();
 87                   //当前等级成功输入一次的游戏积分
 88                   int playPerScore=LevelParam.levels[player.getLevelNo()-1].getPerScore();
 89                   //玩完当局之后设置当前的积分
 90                   player.setCurScore(currentScore+playPerScore);
 91                   //1.4.2.2 计算已用时间
 92                   player.setElapsedTime((int)palytime);
 93                   //1.4.2.3 输出当前积分,当前级别,已用时间
 94                   System.out.println("输入正确,您的级别"
 95                           +player.getLevelNo()
 96                           +",您的积分"+player.getCurScore()
 97                           +",已用时间"+player.getElapsedTime());
 98                   //1.4.2.4 判断用户是否已经闯过最后一关
 99                   if(player.getLevelNo()==LevelParam.levels.length){
100                       //计算闯关分数
101                       //当前局成功一次的积分
102                       int perScore=LevelParam.levels[player.getLevelNo()-1].getPerScore();
103                       //获取当前关的局数
104                       int perNum=LevelParam.levels[player.getLevelNo()-1].getStrTime();
105                       //计算每关的总积分
106                       int score=perScore*perNum;
107                       //判断是否最后通关
108                       if(player.getCurScore()==score){
109                           System.out.println("恭喜你已经通关成功,成为绝世高手!");
110                           System.exit(0);
111                       }
112                       
113                   }
114               }
115         }else{ 
116          //2.输入不正确
117             System.out.println("输入错误,退出!");
118             System.exit(0);
119         }
120     }
121     
122     public Player getPlayer() {
123         return player;
124     }
125     public void setPlayer(Player player) {
126         this.player = player;
127     }
128 
129 }
Game.java

5、测试类Test.java

技术分享
 1 package com.bdqn;
 2 
 3 public class Test {
 4 
 5     /**
 6      * @param args
 7      */
 8     public static void main(String[] args) {
 9       Player player=new Player();
10       player.play();
11 
12     }
13 
14 }
Test.java

 

Java面向对象总复习-QuickHit

标签:

原文地址:http://www.cnblogs.com/holly8/p/5679782.html

(1)
(4)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!