摘要:閱讀本文約分鐘處理戰艦游戲前言你聽說過有些程序員上班總是遲到,而下班又很準時嗎因為他們使用了。復現上一章我們的程序運行起來了,但是還存在一些低級或者嚴重的,即當用戶擊中一個坐標后可以重復擊殺來快速接受游戲。
閱讀本文約 “6分鐘”
ArrayList處理戰艦游戲BUG 前言你聽說過有些程序員上班總是遲到,而下班又很準時嗎?因為他們使用了Java API。核心Java函數庫是由一堆等著被你當做組件使用的類集合而成的。你可以大量運用這些預先創建好的組件來寫出你的程序。
Bug復現上一章我們的程序運行起來了,但是還存在一些低級或者嚴重的bug,即當用戶擊中一個坐標后可以重復擊殺來快速接受游戲。(如下圖)【Java貓說】構建戰艦類控制臺游戲
為什么呢? 對,這和我們的檢查方法有關系,我們看看這個遍歷方法
//循環遍歷 for (int cell:locationCells){ if (guess == cell){ result = "hit"; numOfHits++; break; } }
它只是進行判斷是否擊中,但是并沒有判定之前是否已經被猜中了。
我們需要怎么解決呢?
如果能夠找到一種數組會在刪除掉某些元素時自動縮小就好了,這樣就不必檢查所有的元素,只要查詢它是否帶有尋找中的值就好。若它還能夠讓你取出數據而不必管理集合的細節就更好!
這里我們就要介紹這個對象,ArrayList,他不是數組,是Java函數庫中的另一個類。
add(Object) 向list中加入對象參數 remove(int index) 在索引參數中移除對象 remove(Object elem) 移除該對象 contains(Object elem) 如果和對象參數匹配返回“true” isEmpty() 如果list中沒有元素返回“true” indexOf(Object elem) 返回對象參數的索引或-1 size() 返回list中元素的個數 get(int index) 返回當前索引參數的對象
這里你還要注意一點,在使用ArrayList時,你只是在運用ArrayList類型的對象,因此就跟運用其他的對象一樣,你會使用“.”運算符來調用它的方法。
比較ArrayList與一般數組1、一般數組再創建時就必須確定大小
2、存放對象給一般數組時必須指定位置
3、一般數組使用特殊的語法
4、在Java5.0中ArrayList是參數化的(parameterized)
知道了方式,接下來我們來修復bug吧!
修改代碼我們將做如下修改
public class DotCom { private ArrayListlocationCells; int numOfHits = 0; //賦值數組 public void setLocationCells(ArrayList locs){ locationCells = locs; } //檢查用戶輸入與隨機數組是否存在相同 public String checkYourSelf(String userInput){ String result = "miss"; //檢索對象參數 int index = locationCells.indexOf(userInput); if (index >= 0){ //擊中移除對象 locationCells.remove(index); //判斷是否結束或存在其余戰艦 if (locationCells.isEmpty()){ result = "kill"; }else{ result = "hit"; } } return result; } }
下一章讓我們來完成更完美的游戲吧!
本文已轉載個人技術公眾號:UncleCatMySelf
歡迎留言討論與點贊
上一篇推薦:【Java貓說】構建戰艦類控制臺游戲
下一篇推薦:
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/76448.html
摘要:閱讀本文約分鐘我們將用基礎來模擬實現大家熟悉的戰艦游戲,目標是要猜想對方戰艦坐標,然后開炮攻擊,命中所有戰艦后,游戲結束。本文已轉載個人技術公眾號歡迎留言討論與點贊上一篇推薦貓說實例變量與局部變量下一篇推薦貓說處理戰艦游戲 閱讀本文約 7分鐘 我們將用基礎Java來模擬實現大家熟悉的戰艦游戲,目標是要猜想對方戰艦坐標,然后開炮攻擊,命中所有戰艦后,游戲結束。接下來我們來分析一下具體的...
摘要:我們來看看實例變量與局部變量之間的差別實例變量是聲明在類內而不是方法中。局部變量在使用前必須初始化。局部變量沒有默認值,如果在變量被初始化前就要使用的話,編譯器會顯示錯誤。 閱讀本文約1.8分鐘 實例變量永遠都會有默認值,如果你沒有明確的賦值給實例變量,或者沒有調用setter,實例變量還是會有值! integers 0 floating points 0.0 boolean...
摘要:當我想聊聊的是對于編程系統編程系統產品編程其實其中也有很多好玩的地方與神奇的景象。最重要的一點是,有助于他人,我很開心編程系統產品可能得到用戶的認可,且對其有所幫助。這就是編程,一個讓許多人痛苦掙扎卻又是一種樂趣和苦惱共存的創造性活動。 程序員是一個在你即將30、40隨時可能面臨高壓禿頂的工作,這是一個朋友在聽到我的新職業的第一反應。我也習以為常的笑笑敷衍過去。 現在高壓已經不是...
閱讀 3458·2023-04-26 01:45
閱讀 2248·2021-11-23 09:51
閱讀 3650·2021-10-18 13:29
閱讀 3447·2021-09-07 10:12
閱讀 710·2021-08-27 16:24
閱讀 1782·2019-08-30 15:44
閱讀 2203·2019-08-30 15:43
閱讀 2961·2019-08-30 13:11