面向对象项目实战-----QuickHit

项目需求:

根据输入速率和正确率将玩家分为不同级别,级别越高,一次显示的字符数越多。如果 玩家在规定时间内完成规定次数的输入,正确率达到要求,则玩家升级。最高级别为6级,初始级别为1.项目实现代码如下:

实现项目的代码:

//游戏类
public class Game {
	/***
	 * 玩家属性
	 */
	public Player play;		

	public Player getPlay() {
		return play;
	}

	public void setPlay(Player play) {
		this.play = play;
	}
	
	public Game(Player play) {		
		this.play = play;
	}

	/***
	 * 输出字符串,返回字符串用于和玩家的输入进行比较
	 * @return
	 */
	public String printStr() {
		StringBuffer sbu=new StringBuffer();
		Random rand=new Random(); 	//产生随机数类
		//根据相应的等级,来获得相应的输入次数
		int strLength=LevelParam.level[play.getLevelNo()-1].getStrLength();

		for(int i=0;i");
				break;
			case 1:
				sbu.append("<");
				break;
			case 2:
				sbu.append("!");
				break;
			case 3:
				sbu.append("#");
				break;
			case 4:
				sbu.append("@");
				break;
			case 5:
				sbu.append("%");
				break;
			case 6:
				sbu.append("&");
				break;
			case 7:
				sbu.append("*");
				break;
			case 8:
				sbu.append("~");
				break;
			case 9:
				sbu.append("?");
				break;
			}
		}
		System.out.println(sbu);  	//输出字符串
		return sbu.toString();		//返回字符串
	}
	
	
	/**
	 * 比较游戏输出out,和玩家输入in,根据结果输出信息
	 */
	public void prinrResult(String out,String in) {
		//输入正确
		if(out.equals(in)) {
			long currentTime=System.currentTimeMillis();
			//如果超时
			if((currentTime-play.getStartTime())/1000>LevelParam.level[play.getLevelNo()-1].getTimeLimit()) {
				System.out.println("你输入的太慢了,已经超时,退出!");
				System.exit(1);
			}
				//如果没有超时
				//计算玩家当前的积分
				play.setCurrScore(play.getCurrScore()+LevelParam.level[play.getLevelNo()-1].getPerScore());
				//计算已用时间
				play.setElapsedTime((int)(currentTime-play.getStartTime())/1000);
				//输出玩家当前级别,当前积分,已用时间
				System.out.println("输入正确,你的级别是:"+play.getLevelNo()+",你的积分是:"+play.getCurrScore()+",已用时间:"+play.getElapsedTime()+"秒!");
				
				//判断用户是否已经闯过最后一关:等级为6,玩家获得的积分==通过所需要的分数(次数*每次的分数)
				if(play.getLevelNo()==6) {
					//获得通关所需要的分数
					int score=LevelParam.level[play.getLevelNo()-1].getPerScore()*LevelParam.level[play.getLevelNo()-1].getStrTime();
					if(score==play.getCurrScore()) {
						System.out.println("恭喜你,通关了~");
						System.exit(0);
					}
				}
		}else {
			//输入错误
			System.out.println("输入错误,退出!");
			System.exit(1);
		}
	}
	
	
}


//玩家类
public class Player {
	private int levelNo;		//级别
	private int currScore;		//积分
	private long startTime;		//开始时间
	private int elapsedTime;	//已用时间
	
	public int getLevelNo() {
		return levelNo;
	}
	public void setLevelNo(int levelNo) {
		this.levelNo = levelNo;
	}
	public int getCurrScore() {
		return currScore;
	}
	public void setCurrScore(int currScore) {
		this.currScore = currScore;
	}
	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() {
		Scanner input=new Scanner(System.in);
		
		Game game=new Game(this);	//this--->指当前对象的引用,传入的值是当前Player类(现在没创建对象)以后创建对象的引用。
		//外层循环一次,等级加1
		for(int i=0;i

效果图:

面向对象项目实战-----QuickHit_第1张图片

你可能感兴趣的:(java,项目)