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

資訊專欄INFORMATION COLUMN

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

ixlei / 3473人閱讀

摘要:閱讀本文約分鐘我們將用基礎(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)分析一下具體的實(shí)現(xiàn)。

游戲目標(biāo):玩家輸入坐標(biāo),打擊隨機(jī)生成的戰(zhàn)艦,全部打掉時(shí)游戲通關(guān)
初始設(shè)置:創(chuàng)建隨機(jī)戰(zhàn)艦數(shù)組坐標(biāo),這里我們用Int類型的數(shù)組來(lái)表示,開(kāi)始等待用戶攻擊
進(jìn)行游戲:用戶輸入一個(gè)坐標(biāo)后,游戲程序判斷是否擊中,返回提示“miss”、“hit”,當(dāng)全部擊中時(shí),返回“kill”,顯示用戶總共擊殺次數(shù)并結(jié)束游戲。

UML設(shè)計(jì)

代碼編程

由此我們大概需要三個(gè)類,一個(gè)主執(zhí)行類,一個(gè)游戲設(shè)置與邏輯判斷類,一個(gè)用戶輸入交互類

我們先看看用戶交互類,其作用就是獲取用戶輸入坐標(biāo)

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;
    }

}

接下來(lái)看看游戲設(shè)置類與邏輯處理,需要一個(gè)數(shù)組set,需要一個(gè)對(duì)數(shù)組的循環(huán)判斷

public class SimpleDotCom {

    int[] locationCells;
    int numOfHits = 0;

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

    //檢查用戶輸入與隨機(jī)數(shù)組是否存在相同
    public String checkYourSelf(String stringGuess){
        int guess = Integer.parseInt(stringGuess);
        String result = "miss";
        //循環(huán)遍歷
        for (int cell:locationCells){
            if (guess == cell){
                result = "hit";
                numOfHits++;
                break;
            }
        }
        //擊中次數(shù)等于數(shù)組長(zhǎng)度時(shí),全部擊殺完成
        if (numOfHits == locationCells.length){
            result = "kill";
        }
        System.out.println(result);
        return result;
    }

}

看到這里你應(yīng)該也能寫出主執(zhí)行方法了吧

public class Main {

    public static void main(String[] args) {
        //記錄玩家猜測(cè)次數(shù)的變量
        int numOfGuesses = 0;
        //獲取玩家輸入的對(duì)象
        GameHelper helper = new GameHelper();
        //創(chuàng)建dotCom對(duì)象
        SimpleDotCom dotCom = new SimpleDotCom();
        //用隨機(jī)數(shù)產(chǎn)生第一格的位置,然后以此制作數(shù)組
        int randomNum = (int)(Math.random()*5);
        int[] locations = {randomNum,randomNum+1,randomNum+2};
        //賦值位置
        dotCom.setLocationCells(locations);
        //記錄游戲是否繼續(xù)
        boolean isAlive = true;
        while (isAlive == true){
            //獲取玩家輸入
            String guess = helper.getUserInput("請(qǐng)輸入一個(gè)數(shù)字");
            //檢查玩家的猜測(cè)并將結(jié)果存儲(chǔ)在String中
            String result = dotCom.checkYourSelf(guess);
            numOfGuesses++;
            //擊殺完成,退出,打印擊殺次數(shù)
            if (result.equals("kill")){
                isAlive = false;
                System.out.println("你執(zhí)行了"+numOfGuesses+"擊殺");
            }
        }
    }
}
游戲效果

下次我們?cè)賹?shí)現(xiàn)一個(gè)更好的游戲吧。

本文已轉(zhuǎn)載個(gè)人技術(shù)公眾號(hào):UncleCatMySelf
歡迎留言討論與點(diǎn)贊
上一篇推薦:【Java貓說(shuō)】實(shí)例變量與局部變量
下一篇推薦:【Java貓說(shuō)】ArrayList處理戰(zhàn)艦游戲BUG

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

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

相關(guān)文章

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

    摘要:閱讀本文約分鐘處理戰(zhàn)艦游戲前言你聽(tīng)說(shuō)過(guò)有些程序員上班總是遲到,而下班又很準(zhǔn)時(shí)嗎因?yàn)樗麄兪褂昧?。?fù)現(xiàn)上一章我們的程序運(yùn)行起來(lái)了,但是還存在一些低級(jí)或者嚴(yán)重的,即當(dāng)用戶擊中一個(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ù)是由一堆等著被...

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

    摘要:我們來(lái)看看實(shí)例變量與局部變量之間的差別實(shí)例變量是聲明在類內(nèi)而不是方法中。局部變量在使用前必須初始化。局部變量沒(méi)有默認(rèn)值,如果在變量被初始化前就要使用的話,編譯器會(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)品可能得到用戶的認(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元查看
<