面向?qū)ο蟪绦蚓毩?xí)二——選擇游戲

面向?qū)ο笏季S的養(yǎng)成需要日積月累的練習(xí)與思考。繼前面實(shí)現(xiàn)的游戲登錄功能,我們可以在此基礎(chǔ)上進(jìn)一步完善該程序?qū)崿F(xiàn)更多的功能。我們可以針對(duì)某一游戲玩法的實(shí)現(xiàn)(一個(gè)比牌小游戲——?dú)g樂(lè)比拼)來(lái)設(shè)置到該情景中。

登錄游戲后玩家即可以選擇要玩的游戲->進(jìn)入游戲->開(kāi)始游戲->游戲ing->游戲結(jié)束。

下面就讓我們來(lái)實(shí)現(xiàn)下一步功能——選擇游戲~

項(xiàng)目實(shí)訓(xùn)——選擇游戲(choosegame)

當(dāng)玩家來(lái)到游戲大廳,成功登錄游戲后,下一步就可以選擇自己想玩的游戲,即選擇游戲。

一、程序分析

寫(xiě)程序的第一步,當(dāng)然就是我們的老盆友——程序分析。從面向?qū)ο蟮乃季S角度入手,分析與整理大致可分為以下幾個(gè)步驟:理清功能、找對(duì)象->抽類(lèi)、理清各個(gè)類(lèi)中要實(shí)現(xiàn)的具體功能、畫(huà)時(shí)序圖/類(lèi)圖

下面我們來(lái)一一實(shí)現(xiàn)吧~

(1)理清功能

目標(biāo)是實(shí)現(xiàn)玩家對(duì)游戲的選擇,首先就要展示游戲類(lèi)型列表,提示玩家進(jìn)行選擇,玩家輸入選擇,選擇成功,進(jìn)入該游戲

(2)找對(duì)象->抽類(lèi)

登錄成功玩家在游戲大廳操作——GameCenter類(lèi)
游戲列表的存放——Constants類(lèi)
展示游戲列表、提示玩家輸入、得到玩家選擇——Console類(lèi):實(shí)現(xiàn)展示列表的通用方法,以及對(duì)輸入輸出的封裝

(3)理清各個(gè)類(lèi)之間的關(guān)系以及要實(shí)現(xiàn)的功能

玩家登錄成功后,在游戲大廳進(jìn)行要玩游戲的選擇,首先由游戲大廳向操控臺(tái)(Console)調(diào)用show menu方法,操控臺(tái)從Constants類(lèi)獲取菜單列表進(jìn)行展示。隨后玩家即可在游戲大廳進(jìn)行選擇:調(diào)用操控臺(tái)的get choose方法,返回玩家的選擇,最終得到游戲的實(shí)例對(duì)象game(該步歸納于下一章)。

(4)畫(huà)類(lèi)圖or時(shí)序圖

該功能只用到了三個(gè)類(lèi),時(shí)序圖簡(jiǎn)單易懂,得圖如下:


choosegame時(shí)序圖

二、寫(xiě)代碼

根據(jù)時(shí)序圖,可以先從簡(jiǎn)單的部分寫(xiě)起,從局部->整體

首先就是Constants類(lèi),儲(chǔ)存列表

val GAME_MENU= arrayOf("歡樂(lè)比拼","歡樂(lè)斗地主","四川麻將")

接著來(lái)到Console類(lèi)里面實(shí)現(xiàn)展示列表以及得到結(jié)果方法,為了之后寫(xiě)程序擴(kuò)展方便,考慮到不止該處要用到展示列表的方法,所以寫(xiě)一個(gè)通用方法更加方便~

var currentMenuList:Array<String> = arrayOf()//指向被輸出列表的標(biāo)記變量
private fun showLineStar(){
    "******************************".showWithEnter()
}//展示格式:輸出分割線(xiàn)

fun showGameMenu(){
   showLineStar()
    currentMenuList= GAME_MENU
    showMenu(GAME_MENU)
    showLineStar()
}
private fun showMenu(menus:Array<String>){
    val dollar=if (currentMenuList.contentEquals(TABLE_LIST))"$" else ""
    for ((index,item) in menus.withIndex()){
        "${index+1}.$item \t".showWithEnter()
    }
}//通用方法

fun getChoice():Int{
    while (true){
        "請(qǐng)選擇:".show()
        try {
            val choice=readLine()!!.toInt()
            if (choice in 1..currentMenuList.size){
                return choice
            }
        }catch (e:java.lang.Exception){
            "輸入不合法 ".show()
        }
    }
}

游戲大廳GameCenter類(lèi)調(diào)用方法,實(shí)現(xiàn)功能

 fun chooseGame(){
        showGameMenu()
        getChoice()
    }

登錄游戲大廳+選擇游戲程序運(yùn)營(yíng)結(jié)果截圖:


運(yùn)行結(jié)果截圖

三、總結(jié)

選擇游戲部分相對(duì)簡(jiǎn)單,用到的類(lèi)也不多,一個(gè)程序中對(duì)于要重復(fù)用到的方法就可編譯一個(gè)通用類(lèi)出來(lái),這里也很好的體現(xiàn)了面向?qū)ο蟮乃枷耄o我們的開(kāi)發(fā)減去了不必要的重復(fù)于冗長(zhǎng)。

選擇完游戲下一步即將進(jìn)入游戲,之后的文章中就讓我們來(lái)對(duì)其中一個(gè)游戲歡樂(lè)比拼(HappyPokerGame)一步一步進(jìn)行具體的實(shí)現(xiàn)

路漫漫其修遠(yuǎn)兮,我們一同加油~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容