成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

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

godruoyi / 1663人閱讀

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

閱讀本文約 “6分鐘”

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

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

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

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

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

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

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

解決BUG(ArrayList)

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

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

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

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

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

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

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

修改代碼

我們將做如下修改

public class DotCom {

    private ArrayList locationCells;
    int numOfHits = 0;

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

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

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

}

下一章讓我們來(lái)完成更完美的游戲吧!

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/76448.html

相關(guān)文章

  • Java貓說(shuō)】構(gòu)建戰(zhàn)艦類(lèi)控制臺(tái)游戲

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

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

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

    dreamtecher 評(píng)論0 收藏0
  • [Java貓說(shuō)]談?wù)劸幊倘松臉?lè)趣與苦惱

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

    walterrwu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<