快速擊鍵遊戲

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遊戲效果

輸入錯誤效果
輸入時間超時





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