类与对象案例-童年回忆之打字游戏

一、玩家类

二、等级类

三、游戏类

四、等级地图

五、测试类

这次要做的案例是一个打字游戏的案例,相信大家小时候都玩过金山打字通的警察抓小偷和飞机大战,这次的案例是类似的简易版。

首先对于这个案例,我们要解决的是如何生成随机的字符串,如何判断生成的字符串和输入的字符串是否相等。

一、玩家类

package com.yc.oop6.hc0705;

public class Player {

private int score; //积分

private long startTime; //各级别的开始时间

private long dis; //每次闯关剩余时间

private int levelNo; //级别号码

public int getScore() {

return score;

}

public void setScore(int score) {

this.score = score;

}

public long getStartTime() {

return startTime;

}

public void setStartTime(long startTime) {

this.startTime = startTime;

}

public int getLevelNo() {

return levelNo;

}

public void setLevelNo(int levelNo) {

this.levelNo = levelNo;

}

public Player(int score, long startTime, int levelNo) {

super();

this.score = score;

this.startTime = startTime;

this.levelNo = levelNo;

}

public Player() {

super();

}

public long getDis() {

return dis;

}

public void setDis(long dis) {

this.dis = dis;

}

}

二、等级类

package com.yc.oop6.hc0705;

public class Level {

private int levelNo; //第几关

private int strLength; //字符串长度

private int strTime; //需要输入的次数

private int timeLimit; //时间限制

private int score; //答对一次获得的积分

public int getLevelNo() {

return levelNo;

}

public int getStrLength() {

return strLength;

}

public int getStrTime() {

return strTime;

}

public int getTimeLimit() {

return timeLimit;

}

public int getScore() {

return score;

}

public Level(int levelNo, int strLength, int strTime, int timeLimit, int score) {

super();

this.levelNo = levelNo;

this.strLength = strLength;

this.strTime = strTime;

this.timeLimit = timeLimit;

this.score = score;

}

public Level() {

super();

}

}

三、游戏类

package com.yc.oop6.hc0705;

import java.util.Random;

import java.util.Scanner;

public class Game {

private Player player;

private Random r = new Random();

private Scanner sc = new Scanner(System.in) ;

public Game(Player player) {

this.player = player;

}

//开始游戏

public void startGame() {

System.out.println("游戏开始");

//开始闯关

for(int i = 0; i < Levels.ls.length; i++) {

System.out.println("开始进入第" + (i+1) + "关");

//每一关的开始在这里

player.setLevelNo(player.getLevelNo() + 1);

player.setStartTime(System.currentTimeMillis());

//循环,这一关要输入多少次

for(int j = 0 ; j < Levels.ls[player.getLevelNo() - 1].getStrTime() ; j++ ) {

String out = printStr();

System.out.println(out);

String in = sc.nextLine();

boolean flag = result(in, out);

if(flag == false) {

System.exit(1);;

}

}

//每剩下1s 增加20分

player.setScore(player.getScore() + (int)player.getDis() * 20);

System.out.println("完成第" + (i+1) + "关,您现在的积分为:" + player.getScore());

System.out.println("进入下一关");

}

}

//随机字符串

public String printStr( ) {

String str = "";

double rNum = 0;

for(int i = 0; i < Levels.ls[player.getLevelNo()-1].getStrLength(); i++ ) {

rNum = r.nextDouble();

if(rNum < 0.3333) {

str += (r.nextInt(9)+1);

}else if(rNum < 0.6667){

str += (char)(r.nextInt(26)+65);

}else {

str += (char)(r.nextInt(26)+97);

}

}

return str;

}

//字符串对比

public boolean result(String in, String out) {

//字符串判断

if(out.equals(in)) {

//先获取一下当前的系统时间

long endTimes = System.currentTimeMillis();

long startTimes = player.getStartTime();

//获得下一关的时间

long dis = Levels.ls[player.getLevelNo() -1 ].getTimeLimit();

if((endTimes - startTimes)/1000 > dis) {

System.out.println("游戏超时,游戏结束,您的最终得分为:" + player.getScore());

return false;

}else {

//输入正确,且没有超时

//加积分

int score = Levels.ls[player.getLevelNo()].getScore();

player.setDis(dis - (endTimes - startTimes)/1000);

player.setScore(player.getScore() + score );

System.out.println("输入正确,您现在的积分为:"+ player.getScore() +" ,这一关您还有: " + player.getDis() + " 秒钟");

return true;

}

}else {

System.out.println("输入错误,游戏结束,您的最终得分为:" + player.getScore());

return false;//输入错误

}

}

}

java打字游戏和解析_java类与对象案例之打字游戏相关推荐

  1. Java类与对象案例之打字游戏

    类与对象案例-童年回忆之打字游戏 一.玩家类 二.等级类 三.游戏类 四.等级地图 五.测试类 这次要做的案例是一个打字游戏的案例,相信大家小时候都玩过金山打字通的警察抓小偷和飞机大战,这次的案例是类 ...

  2. java学习之路——类与对象案例之打字游戏

    类与对象案例-童年回忆之打字游戏 一.玩家类 二.等级类 三.游戏类 四.等级地图 五.测试类 这次要做的案例是一个打字游戏的案例,相信大家小时候都玩过金山打字通的警察抓小偷和飞机大战,这次的案例是类 ...

  3. java 作业 老师与教员信息 类与对象

    java 作业 老师与教员信息 类与对象 需求 逻辑图 学生类 public class Student {int age; // 年龄String className; // 班级名称String ...

  4. Java基础语法(七)——类和对象

    文章目录 Java基础语法(七)--类和对象 一.类和对象的初步认识 二. 类和类的实例化 1.类的定义 2.实例化对象 3.如何使用类中的数据 三. 类的成员 1. 字段/属性/成员变量 (1)实例 ...

  5. java类与对象_Java类与对象

    类与对象 1,面向对象编程简介 Java语言最大的特点在于面向对象的编程设计,并且面向对象的编程设计也在由于Java自身的发展而不断发展.面向过程编程(C语言).函数式编程(Scala).面向对象编程 ...

  6. java对类对象初始化_Java类和对象初始化

    Java类和对象初始化Tag内容描述: 1.解析 Java 类和对象的初始化过程 由一个单态模式引出的问题谈起 北京高伟达西南分软 Java EE 软件工程师 三年 Java EE 项目经验 行业方向 ...

  7. java类与对象作用_Java类与对象

    ●类和对象的关系: 一:类是对同一类事物(对象)的抽象,对象实际存在的该类的各种实体. 二:面向对编程的核心:找合适的对象来做合适的事. 三:Java中找到对象: 1):sun自己定义好的类,必须知道 ...

  8. java 对象 方法_java——类、对象、方法

    一.类 1.Java语言把一组对象中相同属性和方法抽象到一个Java源文件就形成了类. 一个java文件可以有多个类,但是每一个类都会生成一个class字节码文件. 如果class 前加public ...

  9. java类和对象实例对象_Java类、对象和实例的理解

    最近在看Python,这门面向对象的语言又引起了类的引用.对象和实例这些概念之间的纠结,我按照自己的理解总结了一下Java里三者的关系,如果有不对的地方还希望大家指出. 类的引用和对象的概念没什么好弄 ...

最新文章

  1. ~/.fcitx/config
  2. 有赞订单管理的三生三世与“十面埋伏”
  3. 分库分表就能无限扩容吗,解释得太好了
  4. 秀操作:函数宏的三种封装方式
  5. MongoDB查询实现 笛卡尔积,Union All 和Union 功能
  6. python中怎么计算_python中的加减乘除运算
  7. Linux Python 安装第三方库时报错 package wheel is not installed
  8. 常见排序算法之插入排序
  9. 《机器人学基础》整理(1)
  10. 爱了!再来推荐5个Java项目开发快速开发脚手架。项目经验和私活都不愁了~
  11. Matlab如何下载安装科研绘图工具Gramm并绘图
  12. iOS文章 - 收藏集 - 掘金
  13. Linkedin如何避免封号及如何高效管理领英账号
  14. PreTranslateMessage使用
  15. 让你彻底明白:HTTPS安全通信机制
  16. TMC4671+TMC6200---Trinamic直流无刷(BLDC)硬件FOC解决方案
  17. 增值税行业平均税负率参照表
  18. 我的Android进阶之旅------Android中adb install 安装错误常见列表
  19. php接收参数引号带斜杆
  20. android之来电自动拒接并自动回复短信_上课模式app

热门文章

  1. 在 Mac 上进行 Android 数据恢复的 7 个有效工具
  2. 网站流量从100PV到1亿级PV网站架构演变
  3. 论文笔记丨关于稳态视觉诱发电位的脑机接口
  4. 轮毂(电机控制)运用中米每秒和转每分的单位换算
  5. 自监督学习(SSL)Self-Supervised Learning
  6. 高频交流信号采样电路设计
  7. 开启编程之旅——什么是编程
  8. Crowd 安装备注
  9. 求助!PIP安装出问题
  10. QGC地面站小白安装与简单实用