快速击键项目

1.类图

2.代码

package cn.quickhit;

import java.util.Random;

import org.junit.Test;

public class Game {
	//被人玩90
	Player player;
	
	public Game(Player player){
			this.player=player;
	}
	public Game(){
		
		
	}		
				
	//生成字符串
	public String getStr(){
		
		StringBuffer buffer=new StringBuffer();
		Random ran=new Random();
		//strLength  2
		int strLength=LevelParam.levels[player.getLevelNo()-1].getStrLength();
		for (int i = 0; i < strLength; i++) {
			//(0,1)
			int rand=ran.nextInt(strLength);
			//根据输入的拼接的符号
			switch (rand) {
			case 0:
				buffer.append(">");
				break;
			case 1:
				buffer.append("<");
				break;
			case 2:
				buffer.append("*");
				break;
			case 3:
				buffer.append("&");
				break;
			case 4:
				buffer.append("%");
				break;
			case 5:
				buffer.append("#");
				break;
			}
		}
		System.out.println(buffer);
		return buffer.toString();
		
	}
	
	
	public void compareInputCharAndOutPutChar(String out,String in){
		long currentTime = System.currentTimeMillis();
		if(!out.equals(in)){
			//系统抛出的字符     和  用户录入的不一致
			System.out.println("输入错误");
			System.exit(1);
		}else{
			//超时  //系统抛出的字符     和  用户录入的一致
			//player.getStrTime() 玩家该关卡 开始的时间
			//LevelParam.levels[player.getLevelNo()-1].getTime()  用时间的上限
			if((currentTime-player.getStrTime())/1000>LevelParam.levels[player.getLevelNo()-1].getTime()){
				System.out.println("超时了你的手速还不够!");
				System.exit(1);
			}else {
				//当前关卡 目前总分数 ========原始累计分数+本次分数
				//LevelParam.levels[player.getLevelNo()-1].getScore() 该等级游戏字符 。输入正确一次获得的分数
				player.setScores(player.getScores()+LevelParam.levels[player.getLevelNo()-1].getScore());
				
				//耗时
				long alreadyusetime=(int)(currentTime-player.getStrTime())/1000;
				int result=(int)alreadyusetime;
				player.setElapsedTime(result);
				
				//获取到当前玩家的等级编号
				int level=player.getLevelNo();
				
				//获取当前玩家该关卡的目前总分数
				int scores=player.getScores();
				
				//获取当前玩家该关卡已用时间
				int usetime= player.getElapsedTime();
				System.out.println("等级为:"+level+"积分为:"+scores+"所用时间:"+usetime);
				
				
				
				if (level==6) {
					System.out.println("你很牛x,完成了所有关卡!");
					System.exit(1);
				}
			
			}
			
		}
	}
			

	
				
				
			
				

	
	

}

package cn.quickhit;

public class Level {
	//等级
	private int levelNo;
	//字符出现几次
	private int strCount;
	//字符串的长度
	private int strLength;
	//分数
	private int score;
	//重置时间
	private int time;
	public Level() {
		super();
		// TODO Auto-generated constructor stub
	}
	public int getLevelNo() {
		return levelNo;
	}
	public void setLevelNo(int levelNo) {
		this.levelNo = levelNo;
	}
	
	
	
	public int getStrCount() {
		return strCount;
	}
	public void setStrCount(int strCount) {
		this.strCount = strCount;
	}
	public int getStrLength() {
		return strLength;
	}
	public void setStrLength(int strLength) {
		this.strLength = strLength;
	}
	public int getScore() {
		return score;
	}
	public void setScore(int score) {
		this.score = score;
	}
	public int getTime() {
		return time;
	}
	public void setTime(int time) {
		this.time = time;
	}
	public Level(int levelNo, int strCount, int strLength, int score, int time) {
		super();
		this.levelNo = levelNo;
		this.strCount = strCount;
		this.strLength = strLength;
		this.score = score;
		this.time = time;
	}
	

}

package cn.quickhit;

public class LevelParam {
	public final static Level levels[]=new Level[6];
	static{
		levels[0]=new Level(1,10,2,1,30);
		levels[1]=new Level(2,9,3,2,26);
		levels[2]=new Level(3,8,4,5,22);
		levels[3]=new Level(4,7,5,8,18);
		levels[4]=new Level(5,6,6,10,14);
		levels[5]=new Level(6,5,7,15,10);
	}
}

package cn.quickhit;

import org.junit.Test;

public class MyTest {
	@Test
	public void testInfo(){
		Game game=new Game();
		game.compareInputCharAndOutPutChar("", "");
	}
}

package cn.quickhit;

import java.util.Scanner;

public class Player {
	//玩家玩的是   第几关?
	private int levelNo;
	//第几关   开始的     时间 
	private long strTime;
	//当前关卡    目前积分数
	private int scores;
	//该关卡已经耗时  多长时间。
	private int elapsedTime;
	
	public void Play(){
		//this:
		    Game game=new Game(this);
			Scanner input = new Scanner(System.in);
			
			for(int i=0;i<LevelParam.levels.length;i++){
				//等级+1
				this.levelNo+=1;
				//积分清零  时间清零
				this.strTime=System.currentTimeMillis();
				this.scores=0;
				//二重循环次数     控制 字符         出现几次??
				for(int j=0;j<LevelParam.levels[levelNo-1].getStrCount();j++)
				{
					//获取系统抛出的字符串内容
					String outString=game.getStr();
					String inString=input.next();
					game.compareInputCharAndOutPutChar(outString, inString);
					
					//接收用户从keyboard中录入的字符串内容
					
					
					//comparexxxxx
					
					
				      
				
				}
				
				
			}
	}
	
	
	
	
	
	
	
	
	
	
	
	
	public int getLevelNo() {
		return levelNo;
	}
	public void setLevelNo(int levelNo) {
		this.levelNo = levelNo;
	}
	public long getStrTime() {
		return strTime;
	}
	public void setStrTime(int strTime) {
		this.strTime = strTime;
	}
	public int getScores() {
		return scores;
	}
	public void setScores(int scores) {
		this.scores = scores;
	}
	public int  getElapsedTime() {
		return elapsedTime;
	}
	public void setElapsedTime(int elapsedTime) {
		this.elapsedTime = elapsedTime;
	}

}

package cn.quickhit;

public class TestQK {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Player player=new Player();
		player.Play();
		
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值