我们现在要做一个项目

一个小小的程序

叫做快速击键

很明了的目的

就是在规定时间内,每次出现一组字母的组合,这个字母只能在DFJK中生成

然后输入相应的文字,按回车 自动判断输入的是否正确

在规定时间内输入完要求的组合数的字符串可以晋级

一共有六个等级

首先等级类

public class Level {
private int levelNo; //等级编号
private int steLength; //当前等级字符串的长度
private int strTimes; //当前等级字符串的出现次数
private int timeLimit; //当前等级的总时间
private int perScore; //每一个键的积分 public Level(int levelNo, int steLength, int strTimes, int timeLimit,
int perScore) {
super();
this.levelNo = levelNo;
this.steLength = steLength;
this.strTimes = strTimes;
this.timeLimit = timeLimit;
this.perScore = perScore;
}

然后使用一个静态类初始化一个等级类的数组

public class LevelPara {
//一个静态常量Level对象数组,保存每一级的初始化信息
public final static Level[] lv;
static{
lv=new Level[6];
lv[0]=new Level(1, 2, 10, 30, 1);
lv[1]=new Level(2, 3, 9, 28, 2);
lv[2]=new Level(3, 4, 8, 26, 4);
lv[3]=new Level(4, 5, 8, 24, 8);
lv[4]=new Level(5, 6, 9, 22, 16);
lv[5]=new Level(6, 8, 8, 20, 32);
}

然后呢 还有两个类

一个是玩家类 一个是游戏类 玩家调用游戏类的方法,游戏类中保存当前玩家类的对象

import java.util.Scanner;

public class Player {
private int levelNo; //等级名称
private int score; //当前分数
private long startTime; //开始时间
private int elapsedTime;//已经过去的时间 public void play(){
//新建一个游戏,游戏玩家是自己
Game game=new Game();
game.setPlayer(this);
Scanner sc=new Scanner(System.in); //循环6个难度等级
for(int i=0;i<6;i++){
levelNo=i+1;
score=0;
startTime=System.currentTimeMillis();
//进行每一级的游戏
for(int j=0;j<LevelPara.lv[i].getStrTimes();j++){
String str=game.printStr(LevelPara.lv[i].getSteLength());
System.out.println(str);
String input=sc.next(); //判断是否输入正确
if(str.equalsIgnoreCase(input)){
game.printResualt();
}
else{
System.out.println("输入错误,游戏结束!");
System.exit(1);
}
}
System.out.println("\n晋级!\n");
}
System.out.println("你太NB了,全过关了!!!");
}

玩家类中有一个play方法进行游戏 利用双重循环

接下来我们看游戏类Game类的方法

public class Game {

    private Player player;    //保存一个玩家对象

    //打印出下一个字符串
public String printStr(int length) {
StringBuffer sb=new StringBuffer();
Random rd=new Random();
//循环产生随机数
for(int i=0;i<length;i++){
int rand=rd.nextInt(4);
switch(rand){
case 0:
sb.append("D");
break;
case 1:
sb.append("F");
break;
case 2:
sb.append("J");
break;
case 3:
sb.append("K");
break;
}
}
return sb.toString();
} public void printResualt() {
//判断是否超时
long current=System.currentTimeMillis();
if((current-player.getStartTime())/1000
>LevelPara.lv[player.getLevelNo()-1].getTimeLimit()){
System.out.println("你输入太慢了,已经超时,自动退出!");
System.exit(1);
} //计算当前积分
player.setScore(player.getScore()+
LevelPara.lv[player.getLevelNo()-1].getPerScore());
//获取已用时间
int time=(int)(current-player.getStartTime())/1000; System.out.println("输入正确,您的级别为"+player.getLevelNo()
+"您的积分为"+player.getScore()+"已经用时"+time+"秒."); }

Test类中new一个Player类对象

然后调用Play方法开始游戏

效果如下

QuickHit快速击键小程序 --S2.4.5的更多相关文章

  1. 05章项目: QuickHit快速击键

    一.项目分析 根据输入速率和正确率将玩家分为不同等级,级别越高,一次显示的字符数越多,玩家正确输入一次的得分也越高.如果玩家在规定时间内完成规定次数的输入,正确率达到规定要求,则玩家升级.玩家最高级别 ...

  2. Quickhit快速击键

    一.项目分析 根据输入速率和正确率将玩家分为不同等级,级别越高,一次显示的字符数越多,玩家正确输入一次的得分也越高.如果玩家在规定时间内完成规定次数的输入,正确率达到规定要求,则玩家升级.玩家最高级别 ...

  3. 快速开发微信小程序

    image.png 最近婷主在做微信小程序.自己的微信公众号也需要添加点料,乘着这次放假,把微信小程序研究了下.虽然没有做什么很强大的功能,不过好歹自己的公众号也有了微信小程序.够用即可. 1.需要先 ...

  4. 两小时快速构建微信小程序

    小程序在2017年1月上线之初,被社会极力吹捧,刻意去将其制造为一个“风口”,透支其价值.但是在之后一个月里,石破天惊迅速归为沉寂.媒体又开始过度消费小程序,大谈其鸡肋之处. 个人认为小程序的一个分水 ...

  5. 【云开发】10分钟零基础学会做一个快递查询微信小程序,快速掌握微信小程序开发技能(轮播图、API请求)

    大家好,我叫小秃僧 这次分享的是10分钟零基础学会做一个快递查询微信小程序,快速掌握开发微信小程序技能. 这篇文章偏基础,特别适合还没有开发过微信小程序的童鞋,一些概念和逻辑我会讲细一点,尽可能用图说 ...

  6. 快速了解微信小程序的使用,一个根据小程序的框架开发的todos app

    微信官方已经开放微信小程序的官方文档和开发者工具.前两天都是在看相关的新闻来了解小程序该如何开发,这两天官方的文档出来之后,赶紧翻看了几眼,重点了解了一下文档中框架与组件这两个部分,然后根据简易教程, ...

  7. 一个小时快速搭建微信小程序教程

    「小程序」这个划时代的产品发布快一周了,互联网技术人都在摩拳擦掌,跃跃欲试.可是小程序目前还在内测,首批只发放了 200 个内测资格(泪流满面).本以为没有 AppID 这个月就与小程序无缘了,庆幸的 ...

  8. 快速上手微信小程序-快递100

    2007 年 1 月 9 日,乔布斯在旧金山莫斯科尼会展中心发布了首款 iPhone,而在十年后的 1 月 9 日,微信小程序正式上线.张小龙以这样的形式,向乔布斯致敬. 小程序在哪里? 小程序功能模 ...

  9. 一个小时快速搭建微信小程序

    「小程序」这个划时代的产品发布快一周了,互联网技术人都在摩拳擦掌,跃跃欲试.可是小程序目前还在内测,首批只发放了 200 个内测资格(泪流满面).本以为没有 AppID 这个月就与小程序无缘了,庆幸的 ...

随机推荐

  1. XE7 & IOS开发之开发账号(2):发布证书、发布授权profile的申请使用,附Ad hoc真机调试、生成ipa文件演示(XCode所有版本通用,有图有真相)

    网上能找到的关于Delphi XE系列的移动开发的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 原创作品,请尊重作者劳动成果,转载请注明出处!!! 注意,以下讨论都是以&q ...

  2. [JavaScript]配置日期选择控件

    我选择的日期控件是:bootstrap-datepicker(下载路径:https://github.com/Aymkdn/Datepicker-for-Bootstrap) 比较方便,实用.原来是英 ...

  3. [转] Fix: Screen Clipping Shortcut In OneNote Not Working After Upgrading To Windows 8.1

    RECOMMENDED: Click here to fix Windows errors and optimize system performance No doubt, OneNote is y ...

  4. vi和vim 的常用操作

    到文件末尾: ESC + shift G : 到文件头: G + G: 整块模式 快捷键  [不使用鼠标,来选择块] v                   字符选择,会将光标经过的地方反白选择! V ...

  5. JS正则大全

    验证数字:^[0-9]*$ 验证n位的数字:^\d{n}$ 验证至少n位数字:^\d{n,}$ 验证m-n位的数字:^\d{m,n}$ 验证零和非零开头的数字:^(0|[1-9][0-9]*)$ 验证 ...

  6. archlinux配置答疑

    Q: chinese can not appear in my firefox and terminal rightly A: pacman -S wqy-microhei Q: install pi ...

  7. C语言dsPIC / PIC24 serial bootloader和C#语言bootloader PC端串口通信程序

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 新dsPIC/PIC2 ...

  8. Windows Server 2008 R2 服务器安装(重装)流程备忘

    系统相关 一.安装Windows Server R2 (略) 二.激活系统:Windows Loader 三.创建域 (自行参考: http://www.cnblogs.com/zhongweiv/a ...

  9. Nginx的安装配置 例子

    1.下载 2.解压 3.运行 a.双击nginx.bat b.启动Nginx 会发现进程里面已经开始运行 4.配置 a.双击打开配置文件夹里面的nginx.conf b.修改 upstream tee ...

  10. 使用英文版eclipse保存代码,出现some characters cannot be mapped using "Cp1251" character encoding.

    some characters cannot be mapped using "Cp1251" character encoding. 解决办法:方案一: eclipse-> ...