我们现在要做一个项目

一个小小的程序

叫做快速击键

很明了的目的

就是在规定时间内,每次出现一组字母的组合,这个字母只能在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. Url路径重写的原理

    ASP.net的地址重写(URLRewriter)实现原理及代码示例 吴剑 2007-01-01 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian/ 概述 访问 ...

  2. 使用JQuery实现手风琴布局

    当鼠标在元素上悬停或移出时,可以通过JQuery的hover方法来给元素绑定两个处理方法,前者用于鼠标悬停,后者用于鼠标移出,因此根据这这特点再设置相应元素的css属性后就可以方便的实现手风琴布局,然 ...

  3. 十、DG

    1.DG是dependency graph,我认为是依赖图,和DAG(有向无环图)的区别:DAG用来做场景管理,每个node代表的不是tranform就是shape,有父子关系. DG是代表了每个实体 ...

  4. 北京易信软科信息技术有限公司 问卷调查管理系统V2.0

    北京易信软科信息技术有限公司 问卷调查管理系统V2.0 支持题目模板配置.题型模板配置.选项模板配置,报表查询功能配置 按月建表功能 运用java开发.velocity技术实现页面加载功能,高性能,高 ...

  5. cron 定时器简单入门

    cron:计划任务,是任务在约定的时间执行已经计划好的工作,根据配置文件约定的时间来执行特定的任务. 编写测试类继承 IJob ,实现Execute 此方法就是用于定时的任务 配置定时时间: 先创建w ...

  6. oracle加并行参数PARALLEL

    select /*+ PARALLEL(t,4) */ * from table1

  7. Python 装饰器学习

    Python装饰器学习(九步入门)   这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方式. 第一步:最简单的函数,准备附加额外功能 1 2 3 4 5 6 7 8 # -*- c ...

  8. 二模12day1解题报告

    T1.笨笨与电影票(ticket) 有n个1和m个0,求每个数前1的个数都大于等于0的个数的排列数. 非常坑的一道题,推导过程很烦.首先求出所有排列数是 C(n+m,m),然后算不合法的个数. 假设存 ...

  9. THINKPHP中关于接口问题(客户端)

    一 apk版本号 客户端发送get请求访问服务器端的控制器方法,通过用户传过来的用户名和密码. 二  服务器端通过客户端传入的user and password 去数据库进行查询,Success就生成 ...

  10. GNS3 桥接虚拟网卡 telnet 实验

    网上很多桥接本地网卡的,一直测试不通.无奈,本人桥接vmware 虚拟网卡通! 1: 2: 3:telnet 加密实验 R1(config)#line vt R1(config)#line vty 0 ...