您的位置:首页 > 产品设计 > UI/UE

QuickHit游戏

2016-05-29 16:56 399 查看

package cn.xiangmu;

public class Level {
private int levelNo;//级别号
private int strLength;//各级别一次输出字符串的长度
private int strTime;//个级别输出字符串的次数
private int timeLimit;//个级别闯关的时间限制
private int perScore;//个级别成功输入一次字符串后增加的分值
//然后在类中定义一个带参构造说
public Level(int levelNo, int strLength, int strTime, int timeLimit,
int perScore) {
super();
this.levelNo = levelNo;
this.strLength = strLength;
this.strTime = strTime;
this.timeLimit = timeLimit;
this.perScore = perScore;
}
public Level() {
}
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 getStrTime() {
return strTime;
}
public void setStrTime(int strTime) {
this.strTime = strTime;
}
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;
}
}
Level 级别参数类LevelParam:

package cn.xiangmu;
/**
* 级别参数类,配置各个级别参数
* @author Administrator
*
*/
public class LevelParam {
//该类中有一个长度为6的等级数组,并且通过静态代码块的方式给数组的每项赋值,
public final static Level levels[] =new Level[6];
//对应六个级别
static{
levels[0]=new Level(1,2,10,30,1);
levels[1]=new Level(2,3,9,26,2);
levels[2]=new Level(3,4,8,22,3);
levels[3]=new Level(4,5,7,18,4);
levels[4]=new Level(5,6,6,15,5);
levels[5]=new Level(6,7,5,12,6);

}
}
LevelParam

玩家类Player:

package cn.xiangmu;

import java.util.Scanner;

public class Player {
private int levelNo;//玩家当前级别
private int curScore;//玩家当前积分
private long startTime=0;//个级别开始时间
private int  elapsedTime;//各级别已用时间
//方法一
public void play(){//玩家玩游戏的方法
Game game=new Game(this);
Scanner input =new Scanner(System.in);
//外层循环,循环一次级别进一级
for(int i=0;i<LevelParam.levels.length;i++){
//0.1进级
this.levelNo+=1;
//0.2晋级后及时清零,积分清零
this.startTime=System.currentTimeMillis();
this.curScore=0;
//0.3内层循环,循环一次完成一次字符串的输出,输入,比较
for(int j=0;j<LevelParam.levels[levelNo-1].getStrTime();j++){
//1.游戏输出字符串
String outStr=game.printStr();
//2.接收用户输入
String inStr=input.next();
//3.游戏判断玩家输入是否正确,并输出相应结果信息
game.printResult(outStr,inStr);
}

}
}
/*//方法三
public void play(){
Scanner input = new Scanner(System.in);
Game game= new Game(this);//创建游戏实例
int setlevelNo =1;//记录循环的次数
game.getPlayer().setLevelNo(1);
while(true){
game.getPlayer().setStartTime(System.currentTimeMillis());//游戏开始,给Player的开始时间赋值
//内层循环
for(int i=0;i<LevelParam.levels[game.getPlayer().getLevelNo()-1].getStrTime();i++){
String out=game.printStr();//接收游戏输出的字符串
String in=input.next();//接受玩家输入的字符串
game.printResult(out,in);//判断
}

}
}*/

/*//方法二
public void play(){
Scanner input = new Scanner(System.in);
Game game= new Game(this);//创建游戏实例
game.getPlayer().setLevelNo(1);
for(int i=0;i<LevelParam.levels.length;i++){
setLevelNo(getLevelNo()+1);
this.curScore=0;
System.out.println("恭喜你进入级:");
game.getPlayer().setStartTime(System.currentTimeMillis());//游戏开始,给Player的开始时间赋值
//内层循环
for(int j=0;j<LevelParam.levels[game.getPlayer().getLevelNo()-1].getStrTime();j++){
String out=game.printStr();//接收游戏输出的字符串
String in=input.next();//接受玩家输入的字符串
game.printResult(out,in);//判断
}

}

}*/
public Player() {
}
public Player(int levelNo, int curScore, long startTime, int elapsedTime) {
super();
this.levelNo = levelNo;
this.curScore = curScore;
this.startTime = startTime;
this.elapsedTime = 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;
}
}
Player

游戏类Game:

package cn.xiangmu;

import java.util.Random;

public class Game {
private Player player;// 玩家//声明一个Player类型的对象

/**
* 构造方法,传入玩家信息
*
* @param player
*            玩家
*/
public Game(Player player) {

this.player = player;
}

/**
* 输出指定级别规定长度的字符串
*
* @return 输出的字符串,用于和用户输入比较
*/

public String printStr() {
// 生成的字符串长度随级别的不同而不同
int strLength = LevelParam.levels[player.getLevelNo() - 1].getStrLength();//输入字符串的长度
StringBuffer buffer = new StringBuffer();
Random random = new Random();
for (int i = 0; i < strLength; i++) {
// 产生随机数
int rand = random.nextInt(strLength);
// 根据随机数拼接字符串
switch (rand) {
case 0:
buffer.append("h");
break;
case 1:
buffer.append("j");
break;
case 2:
buffer.append("k");
break;
case 3:
buffer.append("l");
break;
case 4:
buffer.append(";");
break;
case 5:
buffer.append("'");
break;
}
}
System.out.println(buffer.toString());//得到输入的字符串

return buffer.toString();//返回当前字符串
}

/**
* 判断玩家输入是否正确,并输出相应结果信息
*
* @param out
*            游戏输出的字符串
* @param in玩家输入的字符串
*/
public void printResult(String out, String in) {

if(out.equals(in)){
long currentTime=System.currentTimeMillis();//系统的当前的时间
//如果超时
if((currentTime-player.getStartTime())/1000>LevelParam.levels[player.getLevelNo()-1].getTimeLimit()){//如果当前时间减开始时间大于规定的时间
System.out.println("你输入太慢了,已经超时了,退出!");
System.exit(1);//退出
}else{
//计算玩家当前积分
player.setCurScore(player.getCurScore()+LevelParam.levels[player.getLevelNo()-1].getPerScore());//加上当前获得的分数
player.setElapsedTime((int)(currentTime-player.getStartTime())/1000);//计算游戏所需时间
int level=player.getLevelNo();
int score=player.getCurScore();
int usetime=player.getElapsedTime();
System.out.printf("输入正确,您的级别%s,您的积分%s,已用时间%s秒。",level,score,usetime);
System.out.println();
if(level==6){
player.setLevelNo(1);
System.out.println("游戏已结束!");
}
}
}else{

System.out.println("输入错误,退出!");
System.exit(1);
}
}

public Player getPlayer() {
return player;
}

public void setPlayer(Player player) {
this.player = player;
}
}
Game

测试:Test:

package cn.xiangmu;

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
Player player=new Player();
System.out.println("疯狂打字游戏开始:");
player.play();
/*long time =System.currentTimeMillis();
System.out.println(time);*/
}

}
Test

 链接:

xiangmu.rar 24KB 5/29/2016 4:53:53 PM
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: