【Java貓說】構建戰艦類控制檯遊戲

閱讀本文約 「7分鐘」java


咱們將用基礎Java來模擬實現你們熟悉的戰艦遊戲,目標是要猜測對方戰艦座標,而後開炮攻擊,命中全部戰艦後,遊戲結束。接下來咱們來分析一下具體的實現。編程

遊戲目標:玩家輸入座標,打擊隨機生成的戰艦,所有打掉時遊戲通關
初始設置:建立隨機戰艦數組座標,這裏咱們用Int類型的數組來表示,開始等待用戶攻擊
進行遊戲:用戶輸入一個座標後,遊戲程序判斷是否擊中,返回提示「miss」、「hit」,當所有擊中時,返回「kill」,顯示用戶總共擊殺次數並結束遊戲。segmentfault

UML設計


圖片描述

代碼編程


由此咱們大概須要三個類,一個主執行類,一個遊戲設置與邏輯判斷類,一個用戶輸入交互類數組

咱們先看看用戶交互類,其做用就是獲取用戶輸入座標dom

public class GameHelper {

    //獲取用戶輸入值
    public String getUserInput(String prompt){
        String inputLine = null;
        System.out.println(prompt + "  ");
        try {
            BufferedReader is = new BufferedReader(new InputStreamReader(System.in));
            inputLine = is.readLine();
            if (inputLine.length()==0) return null;
        }catch (IOException e){
            System.out.println("IOException: "+e);
        }
        return inputLine;
    }

}

接下來看看遊戲設置類與邏輯處理,須要一個數組set,須要一個對數組的循環判斷spa

public class SimpleDotCom {

    int[] locationCells;
    int numOfHits = 0;

    //賦值數組
    public void setLocationCells(int[] locs){
        locationCells = locs;
    }

    //檢查用戶輸入與隨機數組是否存在相同
    public String checkYourSelf(String stringGuess){
        int guess = Integer.parseInt(stringGuess);
        String result = "miss";
        //循環遍歷
        for (int cell:locationCells){
            if (guess == cell){
                result = "hit";
                numOfHits++;
                break;
            }
        }
        //擊中次數等於數組長度時,所有擊殺完成
        if (numOfHits == locationCells.length){
            result = "kill";
        }
        System.out.println(result);
        return result;
    }

}

看到這裏你應該也能寫出主執行方法了吧設計

public class Main {

    public static void main(String[] args) {
        //記錄玩家猜想次數的變量
        int numOfGuesses = 0;
        //獲取玩家輸入的對象
        GameHelper helper = new GameHelper();
        //建立dotCom對象
        SimpleDotCom dotCom = new SimpleDotCom();
        //用隨機數產生第一格的位置,而後以此製做數組
        int randomNum = (int)(Math.random()*5);
        int[] locations = {randomNum,randomNum+1,randomNum+2};
        //賦值位置
        dotCom.setLocationCells(locations);
        //記錄遊戲是否繼續
        boolean isAlive = true;
        while (isAlive == true){
            //獲取玩家輸入
            String guess = helper.getUserInput("請輸入一個數字");
            //檢查玩家的猜想並將結果存儲在String中
            String result = dotCom.checkYourSelf(guess);
            numOfGuesses++;
            //擊殺完成,退出,打印擊殺次數
            if (result.equals("kill")){
                isAlive = false;
                System.out.println("你執行了"+numOfGuesses+"擊殺");
            }
        }
    }
}

遊戲效果


圖片描述

下次咱們再實現一個更好的遊戲吧。code


本文已轉載我的技術公衆號:UncleCatMySelf
歡迎留言討論與點贊
上一篇推薦:【Java貓說】實例變量與局部變量
下一篇推薦:【Java貓說】ArrayList處理戰艦遊戲BUG對象

相關文章
相關標籤/搜索