public class leve {
private int leveNo;
private int strLength;
private int strTimes;
private int timeLimit;
private int perScore; public leve(int leveNo, int strLength, int strTimes, int timeLimit,
int perScore) {
super();
this.leveNo = leveNo;
this.strLength = strLength;
this.strTimes = strTimes;
this.timeLimit = timeLimit;
this.perScore = perScore;
}
public leve() {
super();
}
public int getLeveNo() {
return leveNo;
}
public void setLeveNo(int leveNo) {
this.leveNo = leveNo;
}
public int getStrLength() {
return strLength;
}
public void setStrLength(int strLength) {
this.strLength = strLength;
}
public int getStrTimes() {
return strTimes;
}
public void setStrTimes(int strTimes) {
this.strTimes = strTimes;
}
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;
} }

Leve

首先编写类,游戏类,玩家类,级别类
玩家类的属性:levelNo玩家编号类,currScore玩家当前积分,stratTime当前级别开始时间,elapsedTime
当前级别已用时间
级别类的属性:levelNo各级别编号,strLengh一次输入的字符串长度,strTime各级别输出字符串的次数,timeLimit各级闯关的时间限制
perScore各级别输入一次正确的得分!
游戏类:player玩家属性(玩家来玩游戏)
因为级别类不包括各个级别的具体参数信息,所以增加一个levelParam类,创建一个长度为6的数组,存放各个级别的参数信息

游戏类Game

public class Game {

    public Player player;

    public Game(Player player) {
super();
this.player = player;
} public Game() {
} public Player getPlayer() {
return player;
} public void setPlayer(Player player) {
this.player = player;
}
Random random = new Random();
public String printstr(){
StringBuffer buffer = new StringBuffer(); int str =Levelparam.leves[player.getLevelNo()-].getStrLength(); for (int i = ; i < str; i++) {
int rand = random.nextInt(str);
switch(rand){
case :
buffer.append("w");
break;
case :
buffer.append("s");
break;
case :
buffer.append("a");
break;
case :
buffer.append("d");
break;
case :
buffer.append("h");
break;
case :
buffer.append("j");
break;
}
}
System.out.println(buffer.toString());
return buffer.toString();
} public void printReslut(String out, String jieshou)
{
if(out.equals(jieshou))
{
long time = System.currentTimeMillis();
//如果超时
if((time-player.getStartTime())/>Levelparam.leves[player.getLevelNo()-].getTimeLimit())
{
System.out.println("已超时,您的速度有待提高");
System.exit();
}
else
{
//当前说获得分值
player.setCurScore(player.getCurScore()+Levelparam.leves[player.getLevelNo()-].getPerScore());
//游戏所需时间
player.setElapsedTime((int)(time-player.getStartTime())/);
int Level = player.getLevelNo();
int score = player.getCurScore();
int usetime = player.getElapsedTime();
System.out.println("输入正确,您的级别是"+Level+"您的积分是"+score+"已用时间"+usetime);
if(Level==)
{
System.exit();
System.out.println("游戏结束");
}
}
}
else
{
System.out.println("游戏失败");
System.exit();
} } }

Came

Leve

public class leve {
private int leveNo;
private int strLength;
private int strTimes;
private int timeLimit;
private int perScore; public leve(int leveNo, int strLength, int strTimes, int timeLimit,
int perScore) {
super();
this.leveNo = leveNo;
this.strLength = strLength;
this.strTimes = strTimes;
this.timeLimit = timeLimit;
this.perScore = perScore;
}
public leve() {
super();
}
public int getLeveNo() {
return leveNo;
}
public void setLeveNo(int leveNo) {
this.leveNo = leveNo;
}
public int getStrLength() {
return strLength;
}
public void setStrLength(int strLength) {
this.strLength = strLength;
}
public int getStrTimes() {
return strTimes;
}
public void setStrTimes(int strTimes) {
this.strTimes = strTimes;
}
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;
} }

Leve

levelParam类

public class Levelparam {
public final static leve[] leves = new leve[];
static{
leves[]=new leve(,,,,);
leves[]=new leve(,,,,);
leves[]=new leve(,,,,);
leves[]=new leve(,,,,);
leves[]=new leve(,,,,);
leves[]=new leve(,,,,); }
}

levelParam

Player

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 print(){ Scanner input = new Scanner(System.in);
Game game= new Game(this);//创建游戏实例 game.getPlayer().setLevelNo();
for (int i = ; i < Levelparam.leves.length; i++) { setLevelNo(getLevelNo()+);
this.curScore=;
System.out.println("恭喜你进入下一级别");
game.getPlayer().setStartTime(System.currentTimeMillis());//游戏开始,给Player的开始时间赋值
//内层循环
for(int j=;j<Levelparam.leves[game.getPlayer().getLevelNo()-].getStrTimes();j++)
{
String out=game.printstr();//接收游戏输出的字符串
String in=input.next();//接受玩家输入的字符串
game.printReslut(out,in);//判断 }
}
}
}

Player

Text

public class Test {
public static void main(String[] args) {
Player py = new Player();
py.print();
} }

Text

--首先game类(先有游戏才能玩):
方法有二:printStr()
       printResult()
1:printStr()方法:生成随机的字符串,使用switch选择结构以生成的随机数进行判断生成的字符串。字符串的长度不得大于各级别输出字符串的长度。
int strLength=LevelParam.levels[player.getLevelNo()-1].getStrLength();由于数组下标是从0开始的,获取该级别输入
的字符串的长度定位到数组中的一项要使用(级别号-1 )定位数组下标。创建一个0到5的随机数,创建StringBuffer对象来拼接字符串。该方法返回
一个拼接好了的字符串。
2:long time=System.currentTimeMillis();获取系统当前时间的毫秒数(严谨到毫秒)
(time-player.getStartTime())/1000>LevelParam.levels[player.getLevelNo()-1].getTimeLimit()如果游戏所用时间大于
游戏规定的时间,判断出局!
 player.setCurScore(player.getCurScore()+LevelParam.levels[player.getLevelNo()-1].getPerScore());加上当前获得的分数
        player.setElapsedTime((int)(time-player.getStartTime())/1000);计算玩游戏所需的时间
输出当前这一关的信息,当进行到第六个级别(最高级别)时,将级别清空,还原为1.
--Player类:创建游戏类(game对象),记录循环的次数,将级别初始为1.
game.getPlayer().setStartTime(System.currentTimeMillis())记录下游戏开始时间!
循环条件,小于输入次数,接收随机生成的字符串,如果用户输入的字符串与该字符串相等,继续游戏,否则,gameOver!
--Text类:直接调用player类的print()方法!

QuickHit项目(输出字符串游戏)的更多相关文章

  1. 通过游戏学python 3.6 第一季 第二章 实例项目 猜数字游戏--核心代码--猜测次数 可复制直接使用 娱乐 可封装 函数

      猜数字游戏--核心代码--猜测次数   #猜数字--核心代码--猜测次数 number=33 amount=3 count=0 while count<=amount: conversion ...

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

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

  3. BZOJ2121 字符串游戏

    Description BX正在进行一个字符串游戏,他手上有一个字符串L,以及其 他一些字符串的集合S,然后他可以进行以下操作:对于一个在集合S中的字符串p,如果p在L中出现,BX就可以选择是否将其删 ...

  4. QuickHit 项目

    package cn.javaoppday01; import java.util.Random; public class Game { public Player player; public G ...

  5. BZOJ2121: 字符串游戏(DP)(字符串删单词,求最多可以删去多少)

    2121: 字符串游戏 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 672  Solved: 376[Submit][Status][Discuss ...

  6. 面向对象-QuickHit项目

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

  7. 20181228 模拟赛 T3 字符串游戏 strGame 博弈论 字符串

    3  字符串游戏(strGame.c/cpp/pas) 3.1  题目描述 pure 和 dirty 决定玩 T 局游戏.对于每一局游戏,有n个字符串,并且每一局游戏由K轮组成.具体规则如下:在每一轮 ...

  8. BZOJ 2121: 字符串游戏 区间DP + 思维

    Description BX正在进行一个字符串游戏,他手上有一个字符串L,以及其他一些字符串的集合S,然后他可以进行以下操作:对 于一个在集合S中的字符串p,如果p在L中出现,BX就可以选择是否将其删 ...

  9. 通过游戏学python 3.6 第一季 第三章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码 可复制直接使用 娱乐 可封装 函数

       猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码   #猜数字--核心代码--猜测次数--随机函数和屏蔽错误代码 import random secrst = random.rand ...

随机推荐

  1. css3 翻转和旋转的区别

    我以前一直以为旋转跟翻转一样,今日自己旋转了好久都发觉跟翻转差一点点,纠结了十几分钟才明白,只能怪自己的立体感太差了. css3中的transform中有旋转,放缩,倾斜,平移的功能,分别对应的属性是 ...

  2. Hadoop JAVA 开发说明

    作为Hadoop程序员,他要做的事情就是: 1.定义Mapper,处理输入的Key-Value对,输出中间结果.2.定义Reducer,可选,对中间结果进行规约,输出最终结果.3.定义InputFor ...

  3. SQLServer并发问题,先SELECT后UPDATE,避免并发脏读情况解决

    在SQL Server中,需要对数据操作进行先SELECT 之后UPDATE,对于这样的操作,如果出现高并发,可能导致脏读情况的发生.不能保证数据的同步. 解决方案是在事物中对表进行加更新锁: 事务一 ...

  4. nodejs:连接数据库SqlServer,mssql模块

    现在的数据库越来越多,如mgdb,我比较常用的是mysql,但有一天做项目需要连接SqlServer,就去找了个方法.找了很多无非就mssql模块和node-sqlserver模块,但node-sql ...

  5. yii2 控制器、方法命名规范和访问路由

    如果模块名称或者控制器名称或者动作名称是用的骆驼格式的命名写法,那么路由里面的每个大写单词之间都要用“-”来连接.如 DateTimeController::actionFastForward 相应的 ...

  6. 解决jdk1.8上编译dubbo失败

    首先从https://github.com/alibaba/dubbo/archive/master.zip下载最新源码,目前最新版本为2.5.4-SNAPSHOT. 我使用的是JDK 1.8.0_0 ...

  7. 小议jQuery插件开发

    1.写在前面: 大家都知道PHP专注后台与数据库的交互,前端页面中是js的天下,而jQuery作为使用最广泛,最简单有效的js的框架.深受大家的喜欢. 而js作为一门面向对象的开发语言,它独特的语法和 ...

  8. logstash VS splunk

    web 系统是典型的分布式部署,由此对其运行状况,硬件运转情况监控也显得尤为重要,这些监控数据表面上对业务运行没有多大的用处(属于基础数据),但正是这些基础数据形成了业务“流”.比如,用户搜索爱好,浏 ...

  9. Java基础知识点复习知识点(一)变量,流程控制,数组

  10. Android自定义对话框

    在android中有自带的对话框,为了美观,很多开发者会使用自定义对话框,如下图: 点击“弹出自定义对话框按钮后”显示如图效果. 首先要自己定义一个xml文件定义自己对话框的样式: <?xml ...