閱讀本文約 「7分鐘」java
咱們將用基礎Java來模擬實現你們熟悉的戰艦遊戲,目標是要猜測對方戰艦座標,而後開炮攻擊,命中全部戰艦後,遊戲結束。接下來咱們來分析一下具體的實現。編程
遊戲目標:玩家輸入座標,打擊隨機生成的戰艦,所有打掉時遊戲通關
初始設置:建立隨機戰艦數組座標,這裏咱們用Int類型的數組來表示,開始等待用戶攻擊
進行遊戲:用戶輸入一個座標後,遊戲程序判斷是否擊中,返回提示「miss」、「hit」,當所有擊中時,返回「kill」,顯示用戶總共擊殺次數並結束遊戲。segmentfault
由此咱們大概須要三個類,一個主執行類,一個遊戲設置與邏輯判斷類,一個用戶輸入交互類數組
咱們先看看用戶交互類,其做用就是獲取用戶輸入座標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對象