golang?手寫貪吃蛇示例實(shí)現(xiàn)

背景
題主現(xiàn)在是php程序員, 學(xué)了一周的golang, 深刻的感受到了其特性的優(yōu)雅及功能的強(qiáng)大, 為了增強(qiáng)熟練度, 決定來(lái)寫個(gè)貪吃蛇來(lái)踐行下.(底部有g(shù)ithub項(xiàng)目鏈接)
需求構(gòu)思
1. 確定元素
- 蛇
- 墻
- 食物
- 分?jǐn)?shù)
- 基本的提示信息
2. 用戶故事
- 蛇撞墻, 死亡
- 蛇吃蛋分?jǐn)?shù)加1, 身體增加一格長(zhǎng)度.
- 點(diǎn)擊鍵盤左鍵, 蛇向左走
- 點(diǎn)擊鍵盤右鍵, 蛇向右走
- 點(diǎn)擊鍵盤上鍵, 蛇向上走
- 點(diǎn)擊鍵盤下鍵, 蛇向下走
- 點(diǎn)esc, 退出游戲
邏輯構(gòu)思
元素及用戶故事都確定了, 就要開(kāi)始寫代碼嗎? 寫項(xiàng)目不是這樣的!要踐行以終為始(很重要!, 否則可能會(huì)造成代碼的荒草叢生), 先去思考一下我們的代碼結(jié)構(gòu)是什么樣子的.
以手持游戲機(jī)為例.
游戲機(jī)其實(shí)就是一個(gè)服務(wù)(Service), 然后屏幕和鍵盤統(tǒng)一由游戲機(jī)調(diào)配.
- 屏幕(provider)
- 鍵盤控制(provider)
然后我們細(xì)分一下屏幕和鍵盤控制的元素:
- 屏幕: 蛇,食物,屏幕寬及高,得分.
- 鍵盤控制: 用戶移動(dòng)指令,用戶退出指令, 蛇死亡指令.
代碼結(jié)構(gòu)
//game control 游戲數(shù)據(jù)結(jié)構(gòu)
type game struct {
//控制
control *control
//屏幕
screen *screen
}
//control 鍵盤控制
type control struct {
moveChannel chan int
quitChannel chan int
playGameStatusChannel chan bool
gameOver bool
direction int
}
//screen 屏幕相關(guān)參數(shù)
type screen struct {
snakes *snake
foodPoint *scope
width int
height int
score int
}
//NewGameService 實(shí)例化游戲服務(wù)
func NewGameService() *gameService {
return &gameService{screenApp: newScreenApp(), monitorApp: newMonitorApp()}
}
//newScreenApp 屏幕實(shí)例化
func newScreenApp() *screenApp {
return &screenApp{Screen: initScreenHandle()}
}
//newMonitorApp 實(shí)例化
func newMonitorApp() *monitorApp {
return &monitorApp{Monitor: initMonitor()}
}
小結(jié)
個(gè)人認(rèn)為項(xiàng)目的代碼的結(jié)構(gòu)寫的還算清晰,所以不放過(guò)多代碼了, 只是把一個(gè)全局的結(jié)構(gòu)圖景放到這里, 留給你去探索. 這個(gè)小項(xiàng)目的代碼邏輯肯定還不完善,你如果有什么想法或者吐槽, 可以在下方留言,每個(gè)我都會(huì)認(rèn)真閱讀和回復(fù).??
最后放上項(xiàng)目鏈接(???????????? 感覺(jué)不錯(cuò), 別忘star哦 ????????????): github.com/TheOnlines/…
以上就是golang 手寫貪吃蛇示例實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于golang 手寫貪吃蛇的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
一文帶你學(xué)會(huì)Go?select語(yǔ)句輕松實(shí)現(xiàn)高效并發(fā)
這篇文章主要為大家詳細(xì)介紹了Golang中select語(yǔ)句的用法,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Golang有一定的幫助,需要的可以參考一下2023-03-03
Go?Excelize?API源碼閱讀Close及NewSheet方法示例解析
這篇文章主要為大家介紹了Go?Excelize?API源碼閱讀Close及NewSheet方法示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
golang數(shù)組-----尋找數(shù)組中缺失的整數(shù)方法
這篇文章主要介紹了golang數(shù)組-----尋找數(shù)組中缺失的整數(shù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12
Golang 使用map需要注意的幾個(gè)點(diǎn)
這篇文章主要介紹了Golang 使用map需要注意的幾個(gè)點(diǎn),幫助大家更好的理解和學(xué)習(xí)golang,感興趣的朋友可以了解下2020-09-09

