quickHit游戏考验的是键盘输入内容的速度和准确性。跟据输入的速率和正确率分为不同的等级,级别越高,显示的字符越多,时间相对比较紧张。

这个案例功能简单,代码量不算很大,采用面向对象的思想可能没有面向过程简单,但这个案例却可以很好的帮我们锻炼我们的面向对象的知识点。

先不要着急写代码,先理清整个业务逻辑。

只要理解了整个业务逻辑,接下来就水到渠成了。

  1. 确定类,既然玩游戏,那一定有玩家和游戏两个类,一次显示的字符数、字符串长度、正确输入一次的得分、规定时间和规定次数都与当前级别有关,可以抽象出来一个级别类。
  2. 各个级别的具体参数信息如字符数、字符串长度、正确输入一次的得分、规定时间和规定次数,应该在游戏开始其那就初始化,我们提前把它写好,接下来就不要管他了,这也可以抽出来一个级别初始化类。
  3. 写代码的时候,可以先把所需要的类都先搭起来,内容可以先不填,先填一些基本的属性,get和set方法,以及一些构造方法,和空方法体。主要就是Game类的print()方法和compara()方法,以及Player类的play()方法比较难写一点。但是理解了业务逻辑,你就会发现其实也就那么回事,只要对代码就好了。
  4. 在填写代码的时候,我觉得先填写Game类的print()方法和compara()方法,最后在填写Player类的play()方法
  5. 其实大部分都是快捷键自动生成的,真正需要自己写的就这三个方法体而已。

看代码吧

import java.util.Scanner;/*** 玩家类*/
public class Player {/*** 1、当前等级* 2、当前积分* 3、已用时间* 4、开始时间*/private int levelNo;private int curScore;private int elaspedTime;private int startTime;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 int getElaspedTime() {return elaspedTime;}public void setElaspedTime(int elaspedTime) {this.elaspedTime = elaspedTime;}public int getStartTime() {return startTime;}public void setStartTime(int startTime) {this.startTime = startTime;}// 玩游戏public void play(){Game game=new Game(this);Scanner sc=new Scanner(System.in);/*** 1、循环等级* 2、循环输入次数*/for (int i=0;i<LevelParams.levels.length;i++){startTime=(int)(System.currentTimeMillis()/1000);levelNo+=1;elaspedTime=0;curScore=0;if (levelNo>1){System.out.println("晋级了!当前等级:"+this.levelNo);}Level level=LevelParams.levels[levelNo-1];//2、循环输入次数for (int j=0;j<level.getStrNum();j++){String out=game.print();String in=sc.next();game.compare(in,out);}}}
}
/*** 等级*/
public class Level {private int levelNo;private int strLength;private int strNum;private int limitTime;private int perScore;/**** @param levelNo* @param strLength* @param strNum* @param limitTime* @param perScore*/public Level(int levelNo, int strLength, int strNum, int limitTime, int perScore) {this.levelNo = levelNo;this.strLength = strLength;this.strNum = strNum;this.limitTime = limitTime;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 getStrNum() {return strNum;}public void setStrNum(int strNum) {this.strNum = strNum;}public int getLimitTime() {return limitTime;}public void setLimitTime(int limitTime) {this.limitTime = limitTime;}public int getPerScore() {return perScore;}public void setPerScore(int perScore) {this.perScore = perScore;}
}
/*** 初始化规则*/
public class LevelParams {public final static Level[] levels=new Level[6];static {levels[0]=new Level(1,2,10,60,10);levels[1]=new Level(2,3,10,60,10);levels[2]=new Level(3,3,10,50,10);levels[3]=new Level(4,4,7,65,10);levels[4]=new Level(5,4,8,55,10);levels[5]=new Level(6,5,5,50,20);}
}
/*** 游戏类*/import java.util.Random;public class Game {private Player player;public Game(Player player) {this.player = player;}/*** 打印系统自动生成字符* 1、获取当前等级* 2、获取规则* 3、获取字符串长度** @return*/public String print(){int levelNo=this.player.getLevelNo();Level level= LevelParams.levels[levelNo-1];int strLegth=level.getStrLength();Random random=new Random();StringBuffer sb=new StringBuffer();for (int i=0;i<strLegth;i++) {//以字符串次数作随机值int r = random.nextInt(level.getStrNum());switch (r) {case 1:sb.append("#");break;case 2:sb.append("$");break;case 3:sb.append("!");break;case 4:sb.append("@");break;case 5:sb.append("*");break;default:sb.append("&");break;}}System.out.println(sb.toString());return sb.toString();}/*** 比较* 1、判断是否相等* 2、判断是否超时* 3、判断是否通关* @param in* @param out*/public void compare(String in,String out){boolean flag=in.equals(out)?true:false;//如果flag为真,则进行下一步判断/**判断是否超时* 1、获取当前时间* 2、获取开始时间* 3、获取限定时间*/if (flag){int curTime=(int)(System.currentTimeMillis()/1000);int startTime=this.player.getStartTime();int levelNo=this.player.getLevelNo();Level level=LevelParams.levels[levelNo-1];int limitTime=level.getLimitTime();if (curTime-startTime>limitTime){System.out.println("你输的太慢了!游戏结束!");System.exit(1);}else {//设置当前积分//设置所用时间this.player.setCurScore(this.player.getCurScore()+level.getPerScore());this.player.setElaspedTime(curTime-startTime);//输出System.out.println("当前等级:"+this.player.getLevelNo()+"当前积分:"+this.player.getCurScore()+"所用时间:"+this.player.getElaspedTime());/*** 判断是否通关**/if (levelNo==6) {int total = level.getPerScore() * level.getStrNum();if (total == this.player.getCurScore()) {System.out.println("恭喜你!游戏已经通关了");System.exit(0);}}}}else {System.out.println("输入错误!游戏结束!");System.exit(1);}}
}
/*** 测试类*/
public class Test {public static void main(String[] args) {Player player=new Player();player.play();}
}

D:\jdk\bin\java "-javaagent:D:\idea\IntelliJ IDEA 2017.3.7\lib\idea_rt.jar=51067:D:\idea\IntelliJ IDEA 2017.3.7\bin" -Dfile.encoding=UTF-8 -classpath D:\jdk\jre\lib\charsets.jar;D:\jdk\jre\lib\deploy.jar;D:\jdk\jre\lib\ext\access-bridge-64.jar;D:\jdk\jre\lib\ext\cldrdata.jar;D:\jdk\jre\lib\ext\dnsns.jar;D:\jdk\jre\lib\ext\jaccess.jar;D:\jdk\jre\lib\ext\jfxrt.jar;D:\jdk\jre\lib\ext\localedata.jar;D:\jdk\jre\lib\ext\nashorn.jar;D:\jdk\jre\lib\ext\sunec.jar;D:\jdk\jre\lib\ext\sunjce_provider.jar;D:\jdk\jre\lib\ext\sunmscapi.jar;D:\jdk\jre\lib\ext\sunpkcs11.jar;D:\jdk\jre\lib\ext\zipfs.jar;D:\jdk\jre\lib\javaws.jar;D:\jdk\jre\lib\jce.jar;D:\jdk\jre\lib\jfr.jar;D:\jdk\jre\lib\jfxswt.jar;D:\jdk\jre\lib\jsse.jar;D:\jdk\jre\lib\management-agent.jar;D:\jdk\jre\lib\plugin.jar;D:\jdk\jre\lib\resources.jar;D:\jdk\jre\lib\rt.jar;D:\Users\9527\IdeaProjects\com.abnormal\out\production\basic.code;D:\下载\log4j-1.2.17.jar quickhit4.Test

&&
&&
当前等级:1当前积分:10所用时间:3
&*
&*
当前等级:1当前积分:20所用时间:7
$&
$&
当前等级:1当前积分:30所用时间:11
&&
&&
当前等级:1当前积分:40所用时间:13
$&
$&
当前等级:1当前积分:50所用时间:15
@&
@&
当前等级:1当前积分:60所用时间:18
@&
@&
当前等级:1当前积分:70所用时间:21
&!
&!
当前等级:1当前积分:80所用时间:24
@*
@*
当前等级:1当前积分:90所用时间:27
!&
!&
当前等级:1当前积分:100所用时间:30
晋级了!当前等级:2
&&&
&&&
当前等级:2当前积分:10所用时间:3
$@&
&@$
输入错误!游戏结束!

quickhit----快打小游戏相关推荐

  1. OPPO快应用小游戏 分包 静态方法报错is not a function问题解决

    OPPO快应用小游戏之前rpk包体是控制在10M以内的,因此没有过多的关注其的分包加载.更新日志中,2020.12.08第2条明文指出"非分包的包体大小不超过 4M,分包的包体大小不超过 1 ...

  2. Python版基于pygame的玛丽快跑小游戏源代码,玛丽冒险小游戏代码,支持双人模式

    基于pygame的玛丽快跑小游戏源代码,玛丽冒险小游戏代码,支持双人模式 按空格进入单人模式,按't'进入双人模式,双人模式下玛丽1采用空格键上跳,玛丽2采用方向上键上跳. 完整代码下载地址:Pyth ...

  3. 由于找不到appvisvsubsystems32.dll_找茬游戏大全:我找东西贼快!小清新找茬游戏小程序,点开既玩...

    50000+游戏爱好者已加入我们! 每天推荐好玩游戏! 关注我们,沐沐带你发现好游戏! <我找东西贼快>游戏小程序好玩吗? <我找东西贼快>小游戏怎么玩? 怎么进入<我找 ...

  4. python制作图形化小游戏_创意编程|Python的GUI简易界面设计测测你的反应力

    Python的GUI简易界面设计案例 测测你的反应力      作为初次接触代码编程的你,是不是觉得Python程序除了"码"就是"字"即使是有趣的程序除了烧烧 ...

  5. 小游戏掉帧卡顿启动慢运行内存不足……这些问题有解吗?

    游戏再好玩,一秒掉线两秒卡顿可还行? 微信公开课讲师开发工程师叶轩分享了这一年的优化效果:在小游戏开发者和平台的共同努力下,内存降低了7.7%,启动耗时降低了46%,过滤限帧提高了9%.这几个数据意味 ...

  6. 微信小程序、微信小游戏作品汇总合集,各种好玩的小程序

    微信小程序.微信小游戏作品汇总合集,各种好玩的小程序 小程序: 微信小程序:易阅小程序作品展示 微信小程序:幸福磁县小程序作品展示 微信小程序:小说精品榜小程序作品展示 微信小程序:武汉智慧交警小程序 ...

  7. 小游戏引擎选型参考指南

    写在前面 前面写了几期有关于小游戏的文章,主要从小游戏开发.小游戏运营.小游戏变现等多个角度进行了较为粗略的介绍,很多同学表示对小游戏引擎部分很感兴趣,希望能够有一些更为深入的分析介绍.今天就对目前主 ...

  8. 原创跑酷小游戏《Cube Duck Run》 - - 方块鸭快跑

    自从unity5出来才开始关注unity,业余时间尝试做了个小游戏: <方块鸭快跑> (Cube Duck Run) 像素风,3d视角,色彩明快,有无尽和关卡两种模式. 应用连接: goo ...

  9. 快能通小学生计算机的游戏,亲子小游戏,帮助孩子更快学会交通安全知识

    随着我国机动化进程加快和小汽车进入千家万户,如何安全乘坐机动车,如何在上放学途中保障儿童青少年的交通安全,成为儿童青少年交通安全保护的重要内容.下面小编介绍几个亲子小游戏,帮助孩子更快学会交通安全知识 ...

  10. HTML5写的简单小游戏-绵羊快跑

    为什么80%的码农都做不了架构师?>>>    用HTML5仿一款灵敏测试的flash小游戏程序: 完整程序在我博客:http://meego123.net/post-61.html ...

最新文章

  1. PyQt5 技术篇-调用文件对话框获取文件、文件夹路径。文件对话框返回选中的多个文件路径
  2. 实验一 Part 1 开发环境的配置运行
  3. 相比传统游戏,区块链游戏的价值在哪里?
  4. 《计算机组成原理》课程设计报告——TEC-2实验系统——微程序设计
  5. python读取第二行_使用Python操作Excel(二):读取数据表
  6. java queue使用_使用Java使用Amazon Simple Queue Service
  7. 《汇编语言》王爽—实验五详解
  8. Bootstrap3 Font Awesome 字体图标带动画的图标
  9. 分享一下最近看的东西
  10. git——IntelliJ中配置使用git,码云管理项目
  11. 【一天一个C++小知识】014:C++中string与char*的区别
  12. Tribon参数化建模之__对型材端切的参数化建模解析
  13. 《人工智能及其应用》重点回顾
  14. did拼接屏最小拼缝0.88mm
  15. python滑稽代码
  16. postgresql fdw mysql_PostgreSQL使用MySQL外表(mysql_fdw)
  17. excel公式编辑器_快速智能的制作电子表格,除了excel还有这些优秀的软件值得拥有...
  18. 微信小程序开发手册离线版本-下载
  19. 计算机关闭自带杀毒,电脑系统自带杀毒软件怎么关闭?两种Windows defender彻底关闭方法(图文)...
  20. 为什么window上没有php-fpm?

热门文章

  1. 2018 Github优秀开源项目整理
  2. (一)制作U盘启动盘
  3. pyhon3爬取百度搜索结果
  4. uniapp 打包成安卓app
  5. 贝壳找房app使用Glide替换Picasso
  6. 2022年美赛D题思路分享+翻译
  7. 中华名将索引 - 第一批:廉颇
  8. js隐藏显示div页面方法
  9. 人生于世上,有几个知己……
  10. 无线蓝牙耳机哪个价位性价比最高?500以内最好的蓝牙耳机推荐