成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

【Java貓說】ArrayList處理戰(zhàn)艦游戲BUG

godruoyi / 1691人閱讀

摘要:閱讀本文約分鐘處理戰(zhàn)艦游戲前言你聽說過有些程序員上班總是遲到,而下班又很準(zhǔn)時嗎因?yàn)樗麄兪褂昧?。?fù)現(xiàn)上一章我們的程序運(yùn)行起來了,但是還存在一些低級或者嚴(yán)重的,即當(dāng)用戶擊中一個坐標(biāo)后可以重復(fù)擊殺來快速接受游戲。

閱讀本文約 “6分鐘”

ArrayList處理戰(zhàn)艦游戲BUG 前言

你聽說過有些程序員上班總是遲到,而下班又很準(zhǔn)時嗎?因?yàn)樗麄兪褂昧薐ava API。核心Java函數(shù)庫是由一堆等著被你當(dāng)做組件使用的類集合而成的。你可以大量運(yùn)用這些預(yù)先創(chuàng)建好的組件來寫出你的程序。

Bug復(fù)現(xiàn)

上一章我們的程序運(yùn)行起來了,但是還存在一些低級或者嚴(yán)重的bug,即當(dāng)用戶擊中一個坐標(biāo)后可以重復(fù)擊殺來快速接受游戲。(如下圖)【Java貓說】構(gòu)建戰(zhàn)艦類控制臺游戲

為什么呢? 對,這和我們的檢查方法有關(guān)系,我們看看這個遍歷方法

//循環(huán)遍歷
for (int cell:locationCells){
    if (guess == cell){
        result = "hit";
        numOfHits++;
        break;
    }
}

它只是進(jìn)行判斷是否擊中,但是并沒有判定之前是否已經(jīng)被猜中了。
我們需要怎么解決呢?

解決BUG(ArrayList)

如果能夠找到一種數(shù)組會在刪除掉某些元素時自動縮小就好了,這樣就不必檢查所有的元素,只要查詢它是否帶有尋找中的值就好。若它還能夠讓你取出數(shù)據(jù)而不必管理集合的細(xì)節(jié)就更好!

這里我們就要介紹這個對象,ArrayList,他不是數(shù)組,是Java函數(shù)庫中的另一個類。

add(Object)
    向list中加入對象參數(shù)
   
remove(int index)
    在索引參數(shù)中移除對象
    
remove(Object elem)
    移除該對象
    
contains(Object elem)
    如果和對象參數(shù)匹配返回“true”
    
isEmpty()
    如果list中沒有元素返回“true”
    
indexOf(Object elem)
    返回對象參數(shù)的索引或-1
   
size()
    返回list中元素的個數(shù)
    
get(int index)
    返回當(dāng)前索引參數(shù)的對象

這里你還要注意一點(diǎn),在使用ArrayList時,你只是在運(yùn)用ArrayList類型的對象,因此就跟運(yùn)用其他的對象一樣,你會使用“.”運(yùn)算符來調(diào)用它的方法。

比較ArrayList與一般數(shù)組

1、一般數(shù)組再創(chuàng)建時就必須確定大小
2、存放對象給一般數(shù)組時必須指定位置
3、一般數(shù)組使用特殊的語法
4、在Java5.0中ArrayList是參數(shù)化的(parameterized)

知道了方式,接下來我們來修復(fù)bug吧!

修改代碼

我們將做如下修改

public class DotCom {

    private ArrayList locationCells;
    int numOfHits = 0;

    //賦值數(shù)組
    public void setLocationCells(ArrayList locs){
        locationCells = locs;
    }

    //檢查用戶輸入與隨機(jī)數(shù)組是否存在相同
    public String checkYourSelf(String userInput){

        String result = "miss";
        //檢索對象參數(shù)
        int index = locationCells.indexOf(userInput);
        if (index >= 0){
            //擊中移除對象
            locationCells.remove(index);
            //判斷是否結(jié)束或存在其余戰(zhàn)艦
            if (locationCells.isEmpty()){
                result = "kill";
            }else{
                result = "hit";
            }
        }
        return result;
    }

}

下一章讓我們來完成更完美的游戲吧!

本文已轉(zhuǎn)載個人技術(shù)公眾號:UncleCatMySelf
歡迎留言討論與點(diǎn)贊
上一篇推薦:【Java貓說】構(gòu)建戰(zhàn)艦類控制臺游戲
下一篇推薦:

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/76448.html

相關(guān)文章

  • Java貓說】構(gòu)建戰(zhàn)艦類控制臺游戲

    摘要:閱讀本文約分鐘我們將用基礎(chǔ)來模擬實(shí)現(xiàn)大家熟悉的戰(zhàn)艦游戲,目標(biāo)是要猜想對方戰(zhàn)艦坐標(biāo),然后開炮攻擊,命中所有戰(zhàn)艦后,游戲結(jié)束。本文已轉(zhuǎn)載個人技術(shù)公眾號歡迎留言討論與點(diǎn)贊上一篇推薦貓說實(shí)例變量與局部變量下一篇推薦貓說處理戰(zhàn)艦游戲 閱讀本文約 7分鐘 我們將用基礎(chǔ)Java來模擬實(shí)現(xiàn)大家熟悉的戰(zhàn)艦游戲,目標(biāo)是要猜想對方戰(zhàn)艦坐標(biāo),然后開炮攻擊,命中所有戰(zhàn)艦后,游戲結(jié)束。接下來我們來分析一下具體的...

    ixlei 評論0 收藏0
  • Java貓說】實(shí)例變量與局部變量

    摘要:我們來看看實(shí)例變量與局部變量之間的差別實(shí)例變量是聲明在類內(nèi)而不是方法中。局部變量在使用前必須初始化。局部變量沒有默認(rèn)值,如果在變量被初始化前就要使用的話,編譯器會顯示錯誤。 閱讀本文約1.8分鐘 實(shí)例變量永遠(yuǎn)都會有默認(rèn)值,如果你沒有明確的賦值給實(shí)例變量,或者沒有調(diào)用setter,實(shí)例變量還是會有值! integers 0 floating points 0.0 boolean...

    dreamtecher 評論0 收藏0
  • [Java貓說]談?wù)劸幊倘松臉啡づc苦惱

    摘要:當(dāng)我想聊聊的是對于編程系統(tǒng)編程系統(tǒng)產(chǎn)品編程其實(shí)其中也有很多好玩的地方與神奇的景象。最重要的一點(diǎn)是,有助于他人,我很開心編程系統(tǒng)產(chǎn)品可能得到用戶的認(rèn)可,且對其有所幫助。這就是編程,一個讓許多人痛苦掙扎卻又是一種樂趣和苦惱共存的創(chuàng)造性活動。 程序員是一個在你即將30、40隨時可能面臨高壓禿頂?shù)墓ぷ?,這是一個朋友在聽到我的新職業(yè)的第一反應(yīng)。我也習(xí)以為常的笑笑敷衍過去。 現(xiàn)在高壓已經(jīng)不是...

    walterrwu 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<