java初级阶段quickhit游戏

来源:互联网 发布:市场上主流单片机 编辑:程序博客网 时间:2024/05/17 02:48
package Quickhit;


import java.util.Random;


public class Game {
private Player player;
private Level level;
// 长度和等级像对应 随 机的(特殊)字符串
public String printStr() {
Level level = LevelParam.levels[player.getLevelno()-1];
StringBuffer sbf = new StringBuffer();
int strLength = level.getStrLength();
Random random = new Random();
for (int i = 0; i < strLength; i++) {
int key = random.nextInt(strLength);
switch (key) {
case 0:
sbf.append("<");
break;
case 1:
sbf.append(">");
break;
case 2:
sbf.append("#");
break;
case 3:
sbf.append("$");
break;
case 4:
sbf.append("%");
break;
default:
sbf.append("*");
break;
}
}
return sbf.toString();
};


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


// 输出比较结果的方法 计算得分并修改玩家的当前分数 输出是否晋级(play方法是否晋级 由方法的返回类型来决定是否晋级)
/**
* 判断输入正确与否 超时 并输出相应的提示信息
* @param out
* @param in
* @param player
* @param level
* @return
*/
public boolean printResult(String out, String in) {
boolean flag = false;
/**
* 1.比较out 和 in是否相等
* 2.得到player的所花费时间和level的limittime进行比较 超时则返回false
* 3.如果满足1和2 则打印提示信息当前级别 当前积分 所用时间

*/
Level level = LevelParam.levels[player.getLevelno()-1];


if(in.equals(out)){
flag=true;
}else{
flag=false;
System.out.println("输入错误,game over!");
}
if(flag){
int elapse=(int)(System.currentTimeMillis()-player.getStarttime());
if((elapse/1000) > level.getLimitTime()){
flag=false;
System.err.println("您所用时间太长,game over!");
}else{
player.setElapsetime(elapse);
player.setCourrentscore(player.getCourrentscore()+level.getPerScore());
System.out.println("输入正确,您的积分:"+player.getCourrentscore()
+"您的级别是:"+player.getLevelno()+"所用时间:"+((player.getElapsetime())/1000));
}
}

return flag;
}


public Player getPlayer() {
return player;
}


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


public Level getLevel() {
return level;
}


public void setLevel(Level level) {
this.level = level;
}





}

package Quickhit;


public class Level {
private int leverNo;
private int strLength;
private int strTimes;
private int limitTime;
private int perScore;


public Level() {
super();
}


public Level(int leverNo, int strLength, int strTimes, int limitTime,
int perScore) {
super();
this.leverNo = leverNo;
this.strLength = strLength;
this.strTimes = strTimes;
this.limitTime = limitTime;
this.perScore = perScore;
}


public int getLeverNo() {
return leverNo;
}


public void setLeverNo(int leverNo) {
this.leverNo = leverNo;
}


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 getLimitTime() {
return limitTime;
}


public void setLimitTime(int limitTime) {
this.limitTime = limitTime;
}


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, 1, 15, 1);
levels[1]=new Level(2, 3, 5, 14, 2);
levels[2]=new Level(3, 4, 3, 13, 5);
levels[3]=new Level(4, 5, 5, 12, 8);
levels[4]=new Level(5, 6, 3, 15, 10);
levels[5]=new Level(6, 7, 3, 12, 15);
}
}


package Quickhit;


import java.util.Scanner;


public class Player {
private int levelno;// 当前级别
private String name;
private int courrentscore;// 当前积分
private long starttime;
private int elapsetime;// 花费时间



public void play() {
Scanner input = new Scanner(System.in);
System.out.println("欢迎来到quickhit游戏,开始挑战");
Game game = new Game(this);

LLL:
for (int i = 0; i < LevelParam.levels.length; i++) {
for (int times = 0; times < LevelParam.levels[i].getStrTimes(); times++) {
this.levelno=LevelParam.levels[i].getLeverNo();
String out = game.printStr();
System.out.println(out);
// 记录游戏开始时间
this.starttime = System.currentTimeMillis();// 当前系统时间 毫秒数和1970年
// 1月1日午夜之差
// 修改玩家当前级别
this.levelno = LevelParam.levels[i].getLeverNo();
System.out.println("请输入上面的字符:");
String in = input.next();
boolean isSuccess = game.printResult(out, in);
// 判断通关的条件1.当前级别=6 2 times=游戏级别(最后一个(strtimes-1)相等)
// 3 isSuccess必须为true
// 每次晋级的条件 满足2和3即可表示晋级成功 可以给予提示
if (isSuccess
&& times == (LevelParam.levels[i].getStrTimes() - 1)) {
if (LevelParam.levels[i].getLeverNo() == 6) {
System.out.println("您已通关成功,天下无敌");
} else {
System.out.println(LevelParam.levels[i].getLeverNo()
+ "级别挑战成功,欢迎到下一级");
}


}else{
break LLL;
}
}
}


}


public int getLevelno() {
return levelno;
}


public void setLevelno(int levelno) {
this.levelno = levelno;
}


public String getName() {
return name;
}


public void setName(String name) {
this.name = name;
}


public int getCourrentscore() {
return courrentscore;
}


public void setCourrentscore(int courrentscore) {
this.courrentscore = courrentscore;
}


public long getStarttime() {
return starttime;
}


public void setStarttime(long starttime) {
this.starttime = starttime;
}


public int getElapsetime() {
return elapsetime;
}


public void setElapsetime(int elapsetime) {
this.elapsetime = elapsetime;
}


package Quickhit;


import java.util.Random;


public class Test {
/**
* 种子固定 随机数也固定 伪随机数 如果不传入种子参数的话 那么种子为 当前时间

* nextInt(n) 如果传入参数 则产生的随机数在0<= 和 <n之间

* @param args
*/
/*public static void main(String[] args) {
/*
* Random random = new Random(); for (int i = 0; i < 5; i++) { boolean
* a=random.nextBoolean(); System.out.println(a);
*/
/*Player player = new Player();
player.play();
System.out.println("游戏结束");
}*/
    public void add(int i) throws NullPointerException{
       if(i==0)
        throw new NullPointerException();//已经到这里了所以捕获到了 返回捕获异常
            System.out.println("add出现异常");       
  }    
  public static void main(String[] args) {
          Test t = new Test();
          try{
                t.add(0);
                System.out.println("add方法返回");
          }catch(Exception e){
                System.out.println("捕获异常");
          }       
   }






}

原创粉丝点击