package cn.javaoppday01;

import java.util.Random;

public class Game {
public Player player; public Game(Player player) {
this.player = player;
}
public void printResult(String out, String in) { long currentTime = System.currentTimeMillis(); if ((currentTime - player.getStartTime()) / > LevelParam.levels[player
.getLevelNo() - ].getTimeLimit()) {
System.out.println("你输入太慢了,已经超时,退出!");
System.exit();
} else if (!out.equals(in)) {
System.out.println("你输入错了了退出!");
System.exit();
} // 计算玩家当前积分
player.setCurScore(player.getCurScore()
+ LevelParam.levels[player.getLevelNo() - ].getPerScore());
System.out.println("下一关" + "您的当前积分是" + player.getCurScore()); } // 输出字符串,返回字符串用于和玩家输入比较。
public String printStr() {
StringBuffer buffer = new StringBuffer();
Random random = new Random();
// 通过循环生成要输出的字符串
for (int i = ; i < ; i++) {
int rand = random.nextInt(); // 产生随机数
// 根据随机数拼接字符串
switch (rand) {
case :
buffer.append(">");
break;
case :
buffer.append("<");
break;
case :
buffer.append("a");
break;
case :
buffer.append("b");
break;
case :
buffer.append("c");
break;
case :
buffer.append("d");
break;
case :
buffer.append("e");
break;
}
} return buffer.toString();
} }

游戏类

package cn.javaoppday01;

public class Level {

    private int levelNo;//级别号
private int strLength;//各级别一次输出字符串的长度
private int stTtime;//各级别输出字符串次数
private int timeLimit;//各级别闯关限时的时间
private int 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 getStTtime() {
return stTtime;
}
public void setStTtime(int stTtime) {
this.stTtime = stTtime;
}
public int getTimeLimit() {
return timeLimit;
}
public void setTimeLimit(int timeLimit) {
this.timeLimit = timeLimit;
}
public int getPerScore() {
return perScore;
}
public void setPerScore(int perScore) {
this.perScore = perScore;
}
public Level(int levelNo,int strLength,int stTtime ,int timeLimit,int perScore){
this.levelNo=levelNo;
this.strLength=strLength;
this.stTtime=stTtime;
this.timeLimit=timeLimit;
this.perScore=perScore; }
}

等级类

package cn.javaoppday01;

import java.util.Scanner;

public class Player {

    private int levelNo;//级别号
private int curScore;//当前积分
private long startTime;//各级别开始时间
private int elapsedTime;//各级别已用时间
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 long getStartTime() {
return startTime;
}
public void setStartTime(long startTime) {
this.startTime = startTime;
}
public int getElapsedTime() {
return elapsedTime;
}
public void setElapsedTime(int elapsedTime) {
this.elapsedTime = elapsedTime;
}
public void play(){
Game game =new Game(this);
Scanner input =new Scanner(System.in);
for(int i=;i<LevelParam.levels.length;i++){
this.levelNo+=;
this.startTime=System.currentTimeMillis();
this.curScore=;
for(int j=;j<LevelParam.levels[levelNo-].getStTtime();j++){
String outStr =game.printStr();
System.out.println(outStr);
String inStr =input.next();
game.printResult(outStr,inStr); } }
} }

玩家类

package cn.javaoppday01;

public class LevelParam {

    public final static Level levels[] =new Level[];//对应六个级别
static{
levels[] =new Level(,,,,);
levels[] =new Level(,,,,);
levels[] =new Level(,,,,);
levels[] =new Level(,,,,);
levels[] =new Level(,,,,);
levels[] =new Level(,,,,); }
}

添加类

package cn.javaoppday01;

public class MyMain {
public static void main(String[] args) {
Player play=new Player();
play.play();
}
}

Main方法测试类

QuickHit 项目的更多相关文章

  1. QuickHit项目(输出字符串游戏)

    public class leve { private int leveNo; private int strLength; private int strTimes; private int tim ...

  2. 快速击键(MyEclipse编写的QuickHit项目)

    public class Level { private int levelNo;// 各级别编号 private int strLength;// 各级别一次输出字符串的长度 private int ...

  3. 面向对象-QuickHit项目

    package com.ketang.game; /** * 游戏级别类 * @author * */ public class Level { private int levelNo; //各级别编 ...

  4. 第五章项目:QuickHit

    需求概述: 根据输入速率和正确率将玩家分为不同级别,级别越高,一次显示的字符数越多,玩家正确输入一次的得分也越高.如果玩家在规定时间内完成规定次数的输入,正确率达到规定要求,则玩家升级(为了简单起见, ...

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

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

  6. QuickHit游戏

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

  7. Fis3前端工程化之项目实战

    Fis3项目 项目目录结构: E:. │ .gitignore │ fis-conf.js │ index.html │ package.json │ README.md │ ├─material │ ...

  8. 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新

    本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...

  9. 最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目

    最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目 最近一个来自重庆的客户找到走起君,客户的业务是做移动互联网支付,是微信支付收单渠道合作伙伴,数据库里存储的是支付流水和交易流水 ...

随机推荐

  1. vue子组件,同级组件之间的相互引用,以及传值交互

    博客地址:http://blog.csdn.net/wang_meiwei/article/details/75948844

  2. 雷林鹏分享:XML 简介

    XML 简介 XML 被设计用来传输和存储数据. HTML 被设计用来显示数据. 应该掌握的基础知识 在您继续学习之前,需要对以下知识有基本的了解: HTML JavaScript 如果您希望首先学习 ...

  3. CSS3实现烟花特效 --web前端

    烟花特效,比较简单,直接贴代码了…… <!DOCTYPE html><html lang="en"><head> <meta charse ...

  4. android -------- 我创建的第一个 NDKDmeo 案例

    前面的NDK是弄的官方的,自己弄了一下,弄让他运行起来,今天来简单的写一个. 我是在Eclipse中开发的,创建一个NDKDemo项目,然后如下图: 在项目上–>右键–>Android T ...

  5. es的分词器analyzer

    analyzer   分词器使用的两个情形:  1,Index time analysis.  创建或者更新文档时,会对文档进行分词2,Search time analysis.  查询时,对查询语句 ...

  6. Python基础之模块以及5大模块的使用

    内容梗概: 1. 模块的简单认识 2. collections模块 3. time时间模块 4. random模块 5. os模块 6. sys模块 1.模块的简单认识定义:模块就是我们把装有特定功能 ...

  7. IntelliJ IDEA调试方法补充

    基本用法&快捷键 1.首先说第一组按钮,共8个按钮,从左到右依次如下: > Show Execution Point (Alt + F10):如果你的光标在其它行或其它页面,点击这个按钮 ...

  8. Oracle PL/SQL异常、存储过程和触发器

    一.异常 1.处理异常 (1)除数不为0 declare b number; begin b:; exception when zero_divide then dbms_output.put_lin ...

  9. 剑指offer-栈的压入与弹出

    题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序 ...

  10. C# 语法特性 - 泛型(C#2.0)

    泛型将 类型参数 的概念引入了 .NET Framework. 泛型主要有两个优点: 1.编译时可以保证类型安全. 2.不用做类型转换,获得一定的性能提升. 泛型方法.泛型委托.泛型接口 除了泛型类之 ...