golang?手寫貪吃蛇示例實現(xiàn)
背景
題主現(xiàn)在是php程序員, 學了一周的golang, 深刻的感受到了其特性的優(yōu)雅及功能的強大, 為了增強熟練度, 決定來寫個貪吃蛇來踐行下.(底部有github項目鏈接)
需求構思
1. 確定元素
- 蛇
- 墻
- 食物
- 分數(shù)
- 基本的提示信息
2. 用戶故事
- 蛇撞墻, 死亡
- 蛇吃蛋分數(shù)加1, 身體增加一格長度.
- 點擊鍵盤左鍵, 蛇向左走
- 點擊鍵盤右鍵, 蛇向右走
- 點擊鍵盤上鍵, 蛇向上走
- 點擊鍵盤下鍵, 蛇向下走
- 點esc, 退出游戲
邏輯構思
元素及用戶故事都確定了, 就要開始寫代碼嗎? 寫項目不是這樣的!要踐行以終為始(很重要!, 否則可能會造成代碼的荒草叢生), 先去思考一下我們的代碼結構是什么樣子的.
以手持游戲機為例.
游戲機其實就是一個服務(Service), 然后屏幕和鍵盤統(tǒng)一由游戲機調配.
- 屏幕(provider)
- 鍵盤控制(provider)
然后我們細分一下屏幕和鍵盤控制的元素:
- 屏幕: 蛇,食物,屏幕寬及高,得分.
- 鍵盤控制: 用戶移動指令,用戶退出指令, 蛇死亡指令.
代碼結構
//game control 游戲數(shù)據(jù)結構 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 屏幕相關參數(shù) type screen struct { snakes *snake foodPoint *scope width int height int score int }
//NewGameService 實例化游戲服務 func NewGameService() *gameService { return &gameService{screenApp: newScreenApp(), monitorApp: newMonitorApp()} }
//newScreenApp 屏幕實例化 func newScreenApp() *screenApp { return &screenApp{Screen: initScreenHandle()} }
//newMonitorApp 實例化 func newMonitorApp() *monitorApp { return &monitorApp{Monitor: initMonitor()} }
小結
個人認為項目的代碼的結構寫的還算清晰,所以不放過多代碼了, 只是把一個全局的結構圖景放到這里, 留給你去探索. 這個小項目的代碼邏輯肯定還不完善,你如果有什么想法或者吐槽, 可以在下方留言,每個我都會認真閱讀和回復.??
最后放上項目鏈接(???????????? 感覺不錯, 別忘star哦 ????????????): github.com/TheOnlines/…
以上就是golang 手寫貪吃蛇示例實現(xiàn)的詳細內容,更多關于golang 手寫貪吃蛇的資料請關注腳本之家其它相關文章!
相關文章
Go語言實現(xiàn)冒泡排序、選擇排序、快速排序及插入排序的方法
這篇文章主要介紹了Go語言實現(xiàn)冒泡排序、選擇排序、快速排序及插入排序的方法,以實例形式詳細分析了幾種常見的排序技巧與實現(xiàn)方法,非常具有實用價值,需要的朋友可以參考下2015-02-02Go語言中?Print?Printf和Println?的區(qū)別解析
這篇文章主要介紹了Go語言中?Print?Printf和Println?的區(qū)別,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03Golang因Channel未關閉導致內存泄漏的解決方案詳解
這篇文章主要為大家詳細介紹了當Golang因Channel未關閉導致內存泄漏時蓋如何解決,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下2023-07-07