面向?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)單易懂,得圖如下:

二、寫(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é)果截圖:

三、總結(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)兮,我們一同加油~