摘要:閱讀本文約分鐘我們將用基礎來模擬實現大家熟悉的戰艦游戲,目標是要猜想對方戰艦坐標,然后開炮攻擊,命中所有戰艦后,游戲結束。本文已轉載個人技術公眾號歡迎留言討論與點贊上一篇推薦貓說實例變量與局部變量下一篇推薦貓說處理戰艦游戲
閱讀本文約 “7分鐘”
我們將用基礎Java來模擬實現大家熟悉的戰艦游戲,目標是要猜想對方戰艦坐標,然后開炮攻擊,命中所有戰艦后,游戲結束。接下來我們來分析一下具體的實現。
游戲目標:玩家輸入坐標,打擊隨機生成的戰艦,全部打掉時游戲通關
初始設置:創建隨機戰艦數組坐標,這里我們用Int類型的數組來表示,開始等待用戶攻擊
進行游戲:用戶輸入一個坐標后,游戲程序判斷是否擊中,返回提示“miss”、“hit”,當全部擊中時,返回“kill”,顯示用戶總共擊殺次數并結束游戲。
由此我們大概需要三個類,一個主執行類,一個游戲設置與邏輯判斷類,一個用戶輸入交互類
我們先看看用戶交互類,其作用就是獲取用戶輸入坐標
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,需要一個對數組的循環判斷
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+"擊殺"); } } } }游戲效果
下次我們再實現一個更好的游戲吧。
本文已轉載個人技術公眾號:UncleCatMySelf
歡迎留言討論與點贊
上一篇推薦:【Java貓說】實例變量與局部變量
下一篇推薦:【Java貓說】ArrayList處理戰艦游戲BUG
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/76450.html
摘要:閱讀本文約分鐘處理戰艦游戲前言你聽說過有些程序員上班總是遲到,而下班又很準時嗎因為他們使用了。復現上一章我們的程序運行起來了,但是還存在一些低級或者嚴重的,即當用戶擊中一個坐標后可以重復擊殺來快速接受游戲。 閱讀本文約 6分鐘 ArrayList處理戰艦游戲BUG 前言 你聽說過有些程序員上班總是遲到,而下班又很準時嗎?因為他們使用了Java API。核心Java函數庫是由一堆等著被...
摘要:我們來看看實例變量與局部變量之間的差別實例變量是聲明在類內而不是方法中。局部變量在使用前必須初始化。局部變量沒有默認值,如果在變量被初始化前就要使用的話,編譯器會顯示錯誤。 閱讀本文約1.8分鐘 實例變量永遠都會有默認值,如果你沒有明確的賦值給實例變量,或者沒有調用setter,實例變量還是會有值! integers 0 floating points 0.0 boolean...
摘要:當我想聊聊的是對于編程系統編程系統產品編程其實其中也有很多好玩的地方與神奇的景象。最重要的一點是,有助于他人,我很開心編程系統產品可能得到用戶的認可,且對其有所幫助。這就是編程,一個讓許多人痛苦掙扎卻又是一種樂趣和苦惱共存的創造性活動。 程序員是一個在你即將30、40隨時可能面臨高壓禿頂的工作,這是一個朋友在聽到我的新職業的第一反應。我也習以為常的笑笑敷衍過去。 現在高壓已經不是...
閱讀 1084·2021-10-08 10:04
閱讀 3523·2021-08-05 10:01
閱讀 2278·2019-08-30 11:04
閱讀 1794·2019-08-29 15:29
閱讀 836·2019-08-29 15:12
閱讀 1670·2019-08-26 12:11
閱讀 3115·2019-08-26 11:33
閱讀 1163·2019-08-26 10:23