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. }

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

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的更多相关文章

  1. DAY25、面向对象总复习

    面向对象总复习:面向过程编程思想: 核心是 过程 二字, 过程指的是解决问题的步骤是,即先干什么再干什么. 基于该编程思想编写程序,相当于一条流水线,一种机械式的思维方式. 面向对象编程思想: 核心是 ...

  2. java面向对象基础复习

    对java基础的一个复习总结吧. 1.继承:通过使用关键字extends,子类可以继承父类所有的方法和属性,但是无法使用 private(私有) 的方法和属性,一次只能继承一个父类. 2.重写:重写( ...

  3. 简单登录注册实现(Java面向对象复习)

    简单登录注册的实现(面向对象的复习) 需求: 设计用户类,包含用户名和密码两个属性 设计LoginDemo类设计用户登录方法 用户有三次登录机会,如果连续三次登录失败则退出程序 功能实现页面:     ...

  4. 20145213《Java程序设计》实验二Java面向对象程序设计实验报告

    20145213<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装,继承,多态 初步掌握UML建模 熟悉S.O. ...

  5. java面向对象(三)之抽象类,接口,向上转型

    java类 java类分为普通类和抽象类,接口,上一节我大概讲了java类的一般格式,今天将抽象类和接口.同时讲一下它们是怎样存储的. 最重要的是理解为什么要有抽象和接口,这样学下来你猜不会迷茫,才能 ...

  6. Java面向对象编程基础

    一.Java面向对象编程基础 1.什么是对象?Object 什么都是对象! 只要是客观存在的具体事物,都是对象(汽车.小强.事件.任务.按钮.字体) 2.为什么需要面向对象? 面向对象能够像分析现实生 ...

  7. 2018-2019-2 20175317 实验二《Java面向对象程序设计》实验报告

    2018-2019-2 20175317 实验二<Java面向对象程序设计>实验报告 一.实验步骤及内容 面向对象程序设计-1 参考 http://www.cnblogs.com/roce ...

  8. 20165220实验二《Java面向对象程序设计》

    实验封面: 实验二 面向对象程序设计-1 实验要求: 参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECUNITTEST 参考http://www. ...

  9. 实验二《Java面向对象程序设计》的一点说明

    实验二<Java面向对象程序设计>的一点说明 本周的实验要求是: 完成实验二<Java面向对象程序设计>中的内容 其中Eclipse相关的内容参考Intellj IDEA 简易 ...

随机推荐

  1. 关于react-native遇到Can't find variable: TouchableHighlight

    当你遇到这样的问题时,是由于你没有import中添加TouchableHighlight import { AppRegistry, StyleSheet, Text, View, PixelRati ...

  2. NGINX----源码阅读---sources配置脚本

    /auto/sources 本文件主要用于对源文件环境变量进行初始化,主要包括:.c和.h文件. 对应变量类型有*_MODULES.*_INCS.*_DEPS等. # Copyright (C) Ig ...

  3. php注册数模式

    在前两篇单例模式和工厂模式后,终于迎来了最后一个基础的设计模式--注册树模式. 什么是注册树模式? 注册树模式当然也叫注册模式,注册器模式.之所以我在这里矫情一下它的名称,是因为我感觉注册树这个名称更 ...

  4. 微信小程序使用场景及取名“潜”规则

    微信小程序使用场景举例: 1.查看公交 2.登记.选座 3.订票 4.K歌.叫代驾 5.快递查询 6.查看天气 7.医院挂号.拿药.缴费 8.加油充电 9.政务服务 微信公众号“数据三观”认为,小程序 ...

  5. 伪AP检测技术研究

    转载自:http://www.whitecell-club.org/?p=310 随着城市无线局域网热点在公共场所大规模的部署,无线局域网安全变得尤为突出和重要,其中伪AP钓鱼攻击是无线网络中严重的安 ...

  6. 通过一个表的id同时查询多个表的数据

    'select c.字段名,x.字段名 as 改为新的显示名,x.字段名 from 表名1 b,表名2 c,表名3 x where b.字段id=' . $id . ' and b.`字段id`=c. ...

  7. 【Python之路】第十篇--HTML

    HTML 是什么? htyper text markup language  即超文本标记语言 超文本: 就是指页面内可以包含图片.链接,甚至音乐.程序等非文字元素. 标记语言: 标记(标签)构成的语 ...

  8. HDU 3294 Girls' research

    题目地址 manacher #include<cstdio> #include<string.h> #include<algorithm> using namesp ...

  9. asp.net 后台验证成功(弹出对话框)并跳转?不能实现

    原始 Context.Response.Write("<script></script>"); Response.Redirect(); 解决办法: Cli ...

  10. Gradle学习草稿

    参考博客:http://www.cnblogs.com/davenkin/p/gradle-learning-1.html Android Plugin DSL Reference http://go ...