快速击键游戏

1.需要使用的类

玩家类(Player)
游戏类(Game)
级别属性类(Level)
级别属性数组实际值(LevelParam)
测试类(Test)


2,具体方法及实现

1初始化各个等级的具体参数

public class LevelParam {
    public final static Level [] levels=new Level[6];
    static{
        levels[0]=new Level(1,2,10,100,1);
        levels[1]=new Level(2,3,9,96,2);
        levels[2]=new Level(3,4,8,82,5);
        levels[3]=new Level(4,5,7,71,8);
        levels[4]=new Level(5,6,6,60,10);
        levels[5]=new Level(6,7,5,59,15);
         }
}


2实现输出随机字符串

    //系统随机获得字符串
    public String  printStr()
    {
        //根据当前选手的级别获取该级别的输出字符串的长度
        int strLength=LevelParam.levels[player.getLevelNo()-1].getStrLength();

        StringBuffer sb=new StringBuffer();
        Random random=new Random();
        for (int i=0;i<strLength;i++){
            //获得随机数0-strLength
            int ran=random.nextInt(strLength);
            //根据随机数来选择输出的字符
            switch(ran){
                case 0:
                    sb.append("l");
                    break;
                case 1:
                    sb.append("c");
                    break;
                case 2:
                    sb.append("x");
                    break;
                case 3:
                    sb.append("l");
                    break;
                case 4:
                    sb.append("x");
                    break;
                case 5:
                    sb.append("h");
                    break;

            }

    }
    //返回随机获得的字符
    return  sb.toString();
    }


3判断选手输入的字符串和系统生成的字符串

    public void printResult(String playerStr,String levelStr){
        //如果不相等输出,直接退出程序
        if (!playerStr.equals(levelStr)){
            System.out.println("输入错误,游戏结束!");
            System.exit(1);
            //如果相等执行下列操作
        }else{
            //获取系统当前时间
            long curTime=System.currentTimeMillis();
            //将所用时间和LevelParam所存储的指定所用时间进行判断,如果大于指定时间输出,退出程序

            if ((curTime-player.getStartTimes())/1000>LevelParam.levels[player.getLevelNo()-1].getTimeLimit()){
                System.out.println("输入太慢,结束游戏!");
                System.exit(1);
            }
            //将分数赋值给player - 分数(玩家原有的分数加上系统的固定得分)
            player.setCurScore(player.getCurScore()+LevelParam.levels[player.getLevelNo()-1].getPerScore());

            //将所用的时间赋值给player- 时间(当前时间减去开始时间)
            player.setElapsedTime((int)((curTime-player.getStartTimes())/1000));

            //输出选手的游戏属性
            System.out.println("输入正确,你的级别"+player.getLevelNo()+",你的积分"+player.getCurScore()+",已用时间"+player.getElapsedTime()+"");

            //如果选手等级等于6,游戏成功,程序结束
            if (player.getLevelNo()==6)
            {
                System.out.println("成功");
                System.exit(1);
            }

        }


    }
 

4实现选手玩游戏

public void Play(){
        //创建一个游戏传入一个选手
        Game game=new Game(this);

        Scanner input=new Scanner(System.in);
        // 外层循环,循环一次级别晋一级
        for (int i=0;i<LevelParam.levels.length;i++){
           //内层循环结束,等级加1
            this.levelNo++;
            //开始时间重新选定
            this.startTimes=System.currentTimeMillis();
            //游戏分数清0
            this.curScore=0;
            //内层循环的次数是根据等级获取的游戏次数
            for (int j=0;j<LevelParam.levels[levelNo-1].getStrTimes();j++){
                //获取系统生成的字符串
                String levelStr=game.printStr();
                System.out.println(levelStr);
                 //获取选手输入的字符串
                String playerStr=input.next();
                //将选手输入的字符串和系统输入的字符串进行比较
                game.printResult(playerStr,levelStr);
            }
        }

    }

5测试

public class Test {
	public static void main(String[] args) {

		System.out.println("开始游戏吗?开始(1)结束(2)");
		Scanner scanner = new Scanner(System.in);
		String string = scanner.next();
		if (string.equals("1")) {
			Player player = new Player();
			player.play();
		}else  if(string .equals("2")){
			System.out.println("游戏结束");
			return;
		}

	}
}


5游戏效果

输入错误效果
输入时间超时





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章