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

 package com.bdqn;
/**
* 1.玩家级别类
* @author pc
*
*/
public class Level {
/**
* 级别号
*/
private int levelNo;
/**
* 各级别一次输出字符串的长度
*/
private int strLength;
/**
* 各级别输出字符串的次数
*/
private int strTime;
/**
* 各级别闯关的时间限制
*/
private int timeLimit;
/**
* 各级别成功输入一次的得分
*/
private int perScore; public Level() {
}
/**
* 有参数构造赋值
* @param levelNo 级别号
* @param strLength 各级别一次输出字符串的长度
* @param strTime 各级别输出字符串的次数
* @param timeLimit 各级别闯关的时间限制
* @param perScore 各级别成功输入一次的得分
*/
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;
}
public int getLevelNo() {
return levelNo;
}
public void setLevelNo(int levelNo) {
this.levelNo = levelNo;
}
public int getStrLength() {
return strLength;
}
public void setStrLength(int strLength) {
this.strLength = strLength;
}
public int getStrTime() {
return strTime;
}
public void setStrTime(int strTime) {
this.strTime = strTime;
}
public int getTimeLimit() {
return timeLimit;
}
public void setTimeLimit(int timeLimit) {
this.timeLimit = timeLimit;
}
public int getPerScore() {
return perScore;
}
public void setPerScore(int perScore) {
this.perScore = perScore;
} }

Level.java

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

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

LevelParam.java

3、玩家类Player.java

 package com.bdqn;

 import java.util.Scanner;

 /**
* 3.玩家类
* @author pc
*
*/
public class Player {
/**
* 玩家的级别号
*/
private int levelNo;
/**
* 当前积分
*/
private int curScore;
/**
* 各级别的开始时间
*/
private long startTime=0;
/**
* 各级别已用时间
*/
private int 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(){
/**
* 玩家玩游戏
* this: 本类对象的
*/
Game game=new Game(this);
/**
* 外层循环一次,内层循环一周
* 外层:关数=级别
* 内层:每关的里的局数
* 循环一次晋级一次,一次通关成功
*/
for (int i = 0; i < LevelParam.levels.length; i++) {
//1.玩家记录游戏级别,晋级
this.levelNo+=1; //2.晋级后计时清零,积分清零
//开始时间=当前系统时间
this.startTime=System.currentTimeMillis();
this.curScore=0; //3.内层循环,循环一次完成一次字符串的输出、输入,比较
for (int j = 0; j < LevelParam.levels[levelNo-1].getStrTime(); j++) {
//3.1 游戏输出字符串
String outStr=game.printStr(); //3.2 接受用户控制台输入
Scanner input=new Scanner(System.in);
String inStr=input.next(); //3.3 游戏判断玩家输入是否正确,并输出相应结果
game.printResult(outStr,inStr);
} }
}
}

Player.java

4、游戏类Game.java

 package com.bdqn;

 import java.util.Random;

 public class Game {
/**
*1. 引入玩家类
*/
private Player player; /**
* 2.游戏被玩家玩
* @param player
*/
public Game(Player player) {
this.player=player;
}
/**
* 3.游戏随机输出字符串
* @return 输出的字符串,用于和玩家输入的比较
*/
public String printStr() {
//1.获取一次输出的字符串的长度
int strLength=LevelParam.levels[player.getLevelNo()-1].getStrLength();
//2.定义动态拼接字符串的对象
StringBuffer sbf=new StringBuffer();
//3.创建生成随机数的对象
Random random=new Random();
//4.循环拼接生成要输出的字符串
for (int i = 0; i < strLength; i++) {
//4.1 产生随机数
int rand=random.nextInt(strLength);
//4.2 根据随机数拼接字符串
switch (rand) {
case 0:
sbf.append(">");
break;
case 1:
sbf.append("<");
break;
case 2:
sbf.append("*");
break;
case 3:
sbf.append("&");
break;
case 4:
sbf.append("%");
break;
case 5:
sbf.append("#");
break;
}
}
//5.输出字符串
System.out.println(sbf.toString()); //6.返回字符串用于和玩家输入做对比
return sbf.toString();
}
/**
* 4.游戏判断玩家输入是否正确,并输出相应结果
* @param outStr 游戏打印的输出字符串
* @param inStr 玩家输入的字符串
*/
public void printResult(String outStr, String inStr) {
//1.输入正确
if(outStr.equals(inStr)){
//1.1 获取当前系统时间(毫秒为单位)
long currentTime=System.currentTimeMillis();
//1.2游戏时间=当前时间-开始时间(秒)
long palytime=(currentTime-player.getStartTime())/1000;
//1.3游戏规定的时间限制
long limitTime=LevelParam.levels[player.getLevelNo()-1].getTimeLimit();
//1.4判断游戏是否超时
if(palytime>limitTime){
//1.4.1 超时
System.out.println("你输入太慢,已经超时,退出!!");
System.exit(1);
}else{
//1.4.2 没有超时
//1.4.2.1 计算当前积分=原来积分+当前等级游戏积分
//原来积分
int currentScore=player.getCurScore();
//当前等级成功输入一次的游戏积分
int playPerScore=LevelParam.levels[player.getLevelNo()-1].getPerScore();
//玩完当局之后设置当前的积分
player.setCurScore(currentScore+playPerScore);
//1.4.2.2 计算已用时间
player.setElapsedTime((int)palytime);
//1.4.2.3 输出当前积分,当前级别,已用时间
System.out.println("输入正确,您的级别"
+player.getLevelNo()
+",您的积分"+player.getCurScore()
+",已用时间"+player.getElapsedTime());
//1.4.2.4 判断用户是否已经闯过最后一关
if(player.getLevelNo()==LevelParam.levels.length){
//计算闯关分数
//当前局成功一次的积分
int perScore=LevelParam.levels[player.getLevelNo()-1].getPerScore();
//获取当前关的局数
int perNum=LevelParam.levels[player.getLevelNo()-1].getStrTime();
//计算每关的总积分
int score=perScore*perNum;
//判断是否最后通关
if(player.getCurScore()==score){
System.out.println("恭喜你已经通关成功,成为绝世高手!");
System.exit(0);
} }
}
}else{
//2.输入不正确
System.out.println("输入错误,退出!");
System.exit(0);
}
} public Player getPlayer() {
return player;
}
public void setPlayer(Player player) {
this.player = player;
} }

Game.java

5、测试类Test.java

 package com.bdqn;

 public class Test {

     /**
* @param args
*/
public static void main(String[] args) {
Player player=new Player();
player.play(); } }

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. DOG角点检测——opencv实现

    1.原理 Difference of Gaussian(DOG)是高斯函数的差分.将两幅图像在不同参数下的高斯滤波结果相减,得到DoG图.步骤: 处理一幅图像在不同高斯参数下的DoG 用两个不同的5x ...

  2. jmeter压力测试的简单实例+badboy脚本录制(一个简单的网页用户登录测试的结果)

    JMeter的安装:在网上下载,在下载后的zip解压后,在bin目录下找到JMeter.bat文件,双击就可以运行JMeter. http://jmeter.apache.org/ 在使用jmeter ...

  3. java自带的监控工具VisualVM一

    转自:http://www.cnblogs.com/wade-xu/p/4369094.html 这篇总结的很不错(本人亲自操手学习),留着以后复习备用,很适合入门级的学习者: VisualVM 是一 ...

  4. CentOS网络接口配置文件ifcfg-eth详解

    ======CentOS网络接口配置文件ifcfg-eth详解====== 文件 /etc/sysconfig/network-scripts/ifcfg-eth0在/etc/sysconfig/ne ...

  5. gmic全球移动互联网大会 全球九站已开启!

    由长城会主办的全球移动互联网大会( 简称GMIC)已成长为世界范围内最具影响力的辐射并连结东西半球的移动互联网商务平台,是最大规模的移动互联网行业盛会. 2017gmic全球移动互联网大会北京站将于2 ...

  6. wvs_patcher批量测试网站

    来自:http://zone.wooyun.org/content/23162 pip install multiprocessing错误. 然后就到官方下载安装包本地安装 multiprocessi ...

  7. vultr优惠码ssd vps赠送50美金,长期有效

    vultr最新优惠码.vultr vps注册教程,是大家关心的问题.网上流传很多vultr vps优惠码,鱼龙混杂,难以判断.其实,获取vultr优惠赠送美元的方式很简单. 第一种,新用户使用绑定信用 ...

  8. JQuery笔记(一)jq的使用方法

    我用的jq版本是支持pc版为主的最高1版本里最高的1.124版本 官网的链接是只有最新的3下载,我把我在官网下载的jq代码链接发出来,如下 点我获取jq代码 和js不同的是,jq开发者封装了一些方法 ...

  9. 用Karma和Jasmine测试Angular应用

    TEST: Before you've written any of the code, you know how you want it to behave. You have a specific ...

  10. php,cgi,nginx关系

    nginx是服务器 什么是服务器? 例如:IIS,Apache,Nginx......主要是提供网上浏览网页的服务,应用层使用HTTP协议. CGI,FastCGI CGI全称是"公共网关接 ...