QuickHit项目

玩家类:
package QuickHit;

import java.util.Scanner;

/**
 * 
 * @author 呵呵
 * 玩家类
 *
 */
public class Player {
	//当前级别号
	private int levelNo;
	//当前级别积分
	private int currScore;
	//当前级别开始时间
	private long startTime=0;	
	//当前级别以用时间
	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(long l) {
		this.elapsedTime = (int) l;
	}
	public Player(int levelNo, int currScore, long startTime, int elapsedTime) {
		super();
		this.levelNo = levelNo;
		this.currScore = currScore;
		this.startTime = startTime;
		this.elapsedTime = elapsedTime;
	}
	public Player() {
		super();
		// TODO Auto-generated constructor stub
	}
public	void play(){
       Game game=new Game(this);
       // game.setPlayer(this);
        Scanner scanner = new Scanner(System.in);
        //外层循环代表着等级
        for (int i = 0;i < LevelParam.levels.length ;i++ )
        {
            //玩家晋级
            levelNo += 1;
            //获得新的游戏开始时间
            startTime = System.currentTimeMillis();
            //每次晋级玩家积分清零
            currScore = 0;
            //内层循环代表着每个级别所需要玩的次数
            for (int j = 0;j < LevelParam.levels[i].getStrTime() ;j++ )
            {
                //系统生成的字符串
                 String out = game.printStr();
                 //玩家输入的字符串
                 String in = scanner.next();
                 //比较,产生结果
                 game.printResult(out,in);
            }
        }
    }
}
	


游戏类:
package QuickHit;

import java.util.Random;

/**
 * 
 * @author 呵呵 
 * 游戏类
 */
public class Game {
	private Player player;

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

	 public String printStr(){
	        //对字符串进行增删改查
	         StringBuffer buffer = new StringBuffer();
	         //创建随机数对象
	         Random random = new Random();
	         //循环生成对应玩家等级长度的字符串
	         for (int i = 0;i < LevelParam.levels[player.getLevelNo() - 1].getStrLength();i++ )
	         {
	             //每次循环就产生一个随机数
	             int rand = random.nextInt(6);
	             //拼接产生随机数所对应的字符串
	             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.toString());
	         //返回生成的字符串
	         return buffer.toString();
	    }
	    //对比系统生成的字符串和玩家输入的字符串是否一样
	    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.print("你输入太慢了,已经超时,退出!");
					System.exit(1);
					//如果没有超时
				}else {
					 //计算玩家当前积分
					player.setCurrScore(player.getCurrScore()+LevelParam.levels[player.getLevelNo()-1].getPerScore());
					//计算玩家以用时间
	                player.setElapsedTime((int) ((currentTime - player .getStartTime()) / 1000)); 
	                //输出玩家当前级别,当前积分和以用时间
	                System.out.println("输入正确,您的级别"+player.getLevelNo()+",您的积分"+player.getCurrScore()+",已用时间"+player.getElapsedTime()+"秒");
	                //判断用户是否已经闯过最后一关并处理
	                if(player.getLevelNo()==6){
	                       int score=LevelParam.levels[player.getLevelNo() - 1].getPerScore() * LevelParam.levels[player.getLevelNo() - 1].getStrTimes();
	                       if(player.getCurrScore()==score){
	                    	   System.out.println("恭喜您,通关成功!");
	                       }else{
	                	System.out.println("输入错误,退出!");
	                	System.exit(0);
	                }

	                } 
				}
			}else{
				System.out.println("输入错误");
				System.out.println("正确的是"+out);
				System.exit(0);
			}
			
		}
	    }


	级别类:
package QuickHit;
/**
 * 
 * @author 呵呵
 *级别类
 */
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 int getLevelNo() {
		return levelNo;
	}
	public void setLevelNo(int levelNo) {
		this.levelNo = levelNo;
	}
	public int getStrTime() {
		return strTime;
	}
	public void setStrTime(int strTime) {
		this.strTime = strTime;
	}
	public Level() {
        super();
    }
    public int getLeveNo() {
        return levelNo;
    }
    public void setLeveNo(int leveNo) {
        this.levelNo = levelNo;
    }
    public int getStrLength() {
        return strLength;
    }
    public void setStrLength(int strLength) {
        this.strLength = strLength;
    }
    public int getStrTimes() {
        return strTime;
    }
    public void setStrTimes(int strTimes) {
        this.strTime = 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;
    }
    }



package QuickHit;

public class LevelParam {
	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,5);
		levels[3]=new Level(4, 5, 7, 18,8);
		levels[4]=new Level(5, 6, 6, 15,10);
		levels[5]=new Level(6, 7, 5, 12,15);
	}

}

Main方法:
package QuickHit;

public class MyMain {

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

	}

}
效果图:
  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值