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

一、玩家类
二、等级类
三、游戏类
四、等级地图
五、测试类

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

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

一、玩家类

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;//输入错误}}
}

四、等级地图

package com.yc.oop6.hc0705;public class Levels {//定义一个静态的对象数组public static Level ls[] = new Level[7];static {ls[0] = new Level(1,2,5,20,10);ls[1] = new Level(2,3,5,18,20);ls[2] = new Level(3,4,4,16,30);ls[3] = new Level(4,5,4,15,40);ls[4] = new Level(5,6,4,15,50);ls[5] = new Level(6,7,3,15,60);ls[6] = new Level(7,8,3,15,70);}
}

五、测试类

package com.yc.oop6.hc0705;public class Test {public static void main(String[] args) {Player p = new Player();Game g = new Game(p);g.startGame();}
}

详细的解释都在代码的注释里了,大家细品。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持,需要更多资料的同学可以评论私信我,记得一键三连哦谢谢大家

最新2021整理收集的一些高频面试题(都整理成文档),有很多干货,包含mysql,netty,spring,线程,spring cloud、jvm、源码、算法等详细讲解,也有详细的学习规划图,面试题整理等,需要获取这些内容的朋友请加Q君羊:547998459

Java类与对象案例之打字游戏相关推荐

  1. java打字游戏和解析_java类与对象案例之打字游戏

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

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

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

  3. 实验2 Java类和对象的设计

    实验题目:Java类和对象的设计 一.上机目的和要求 理解面向对象的编程思想.类与对象的概念: 加深理解封装性.继承性和多态性: 掌握this.super.final.static等关键字的使用: 掌 ...

  4. 练习-Java类和对象之对象引用之模拟手机功能

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 题目: 任务: 实现手机的基本功能. 手机具有属性:品牌(brand).型号(type).价格(price).操作系统(os)和内存( ...

  5. QLExpress 系列入门教程-04-QLExpress 绑定java类或者对象的method

    目录 目录 绑定java类或者对象的method 测试案例 导航 绑定java类或者对象的method addFunctionOfClassMethod+addFunctionOfServiceMet ...

  6. java类与对象实验_JAVA类与对象实验报告

    <JAVA类与对象实验报告>由会员分享,可在线阅读,更多相关<JAVA类与对象实验报告(6页珍藏版)>请在人人文库网上搜索. 1.面向对象程序设计实验报告实验三.类与对象(1) ...

  7. 杨校老师课堂之Java类与对象、封装、构造方法

    杨校老师课堂之Java类与对象.封装.构造方法 本篇文章内容如下: 面向对象 类与对象 三大特征--封装 构造方法 教学目标 能够理解面向对象的思想 能够明确类与对象关系 能够掌握类的定义格式 能够掌 ...

  8. 从Java类到对象的创建过程都做了些啥?内存中的对象是啥样的?

    转载自   从Java类到对象的创建过程都做了些啥?内存中的对象是啥样的? 先回顾一下Java程序执行的过程: Java程序执行时,第一步系统创建虚拟机进程,然后虚拟器用类加载器Class Loade ...

  9. java类和对象程序_Java类与对象程序设计基础

    Java类与对象程序设计基础 一.实验目的: 通过编制一个独立应用程序,使得学生掌握Java的系统所提供类的引用方法:通过编制一个完整的应用程序,使得学生对Java的应用程序的基本构成和基本算法熟练掌 ...

最新文章

  1. mysql批量insert bug_MySQL Bug insert into on duplicate key update 语法更新 text blob 大字段导致 MySQL crash...
  2. 豪掷十亿拿下CUBA运营权,阿里体育未来也许并不轻松
  3. 爬虫采集-基于webkit核心的客户端Ghost.py [爬虫实例]
  4. ubuntu wireshark 普通用户抓包
  5. scope python_Python标准库Scope
  6. Spring Security 3 Ajax登录–访问受保护的资源
  7. 教你用Python 编写 Hadoop MapReduce 程序
  8. 存储容量单位GB GiB MB MiB
  9. python排序获得秩 (index)
  10. 特斯拉Model 3设计缺陷导致底盘经常堆积厚厚泥沙
  11. 2019年的反弹牛市总结
  12. Java多线程--并发中集合的使用PriorityBlockingQueue
  13. 泊松分布、高斯分布、卡方检验与noise level
  14. Ubuntu Linux 3D桌面完全教程 Ubuntu Linux 3D桌面完全教程
  15. 数控开料机,板式家具开料机
  16. 在linux上面如何解决高iowait问题
  17. 汇编语言学习和常见错误(个人总结)
  18. xchariot使用笔记
  19. i7 1280p和i7 12700h差多少 i71280p和12700h对比
  20. vue+element 上传图片的进度显示

热门文章

  1. 最小生成树之克鲁斯卡尔算法
  2. vim修改sessions存放目录_不拆机直接修改黑群晖的SN和MAC
  3. VL102+IT6563替代方案|TYPEC转HDMI带PD方案|AG9311MAQ设计方案
  4. 影像传感器尺寸换算(英寸-毫米)
  5. 强化学习蒙特卡洛3.4 | Every-visit 和 First-visit MC
  6. u8信息服务器,u8服务器的配置
  7. 成功人士分析问题的11种思维方式
  8. 33MW太阳能厂动工 日本福岛开启复兴之路
  9. win10桌面计算机怎么显示器,win10电脑三分屏怎么设置_win10电脑怎么分屏3个显示器...
  10. 俄罗斯方块【六种模式】【c语言】【史上最强】