欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2022年07月21日 11:00:37   作者:黑胡子Z  
這篇文章主要為大家介紹了golang?手寫貪吃蛇示例實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

背景

題主現(xiàn)在是php程序員, 學(xué)了一周的golang, 深刻的感受到了其特性的優(yōu)雅及功能的強(qiáng)大, 為了增強(qiáng)熟練度, 決定來寫個(gè)貪吃蛇來踐行下.(底部有g(shù)ithub項(xiàng)目鏈接)

需求構(gòu)思

1. 確定元素
    - 蛇
    - 墻
    - 食物
    - 分?jǐn)?shù)
    - 基本的提示信息

2. 用戶故事
    - 蛇撞墻, 死亡
    - 蛇吃蛋分?jǐn)?shù)加1, 身體增加一格長度.
    - 點(diǎn)擊鍵盤左鍵, 蛇向左走
    - 點(diǎn)擊鍵盤右鍵, 蛇向右走
    - 點(diǎn)擊鍵盤上鍵, 蛇向上走
    - 點(diǎn)擊鍵盤下鍵, 蛇向下走
    - 點(diǎn)esc, 退出游戲

邏輯構(gòu)思

元素及用戶故事都確定了, 就要開始寫代碼嗎? 寫項(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)寫的還算清晰,所以不放過多代碼了, 只是把一個(gè)全局的結(jié)構(gòu)圖景放到這里, 留給你去探索. 這個(gè)小項(xiàng)目的代碼邏輯肯定還不完善,你如果有什么想法或者吐槽, 可以在下方留言,每個(gè)我都會(huì)認(rèn)真閱讀和回復(fù).??

最后放上項(xiàng)目鏈接(???????????? 感覺不錯(cuò), 別忘star哦 ????????????): github.com/TheOnlines/…

以上就是golang 手寫貪吃蛇示例實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于golang 手寫貪吃蛇的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 一文帶你吃透Golang中的類型轉(zhuǎn)換

    一文帶你吃透Golang中的類型轉(zhuǎn)換

    Golang是一種強(qiáng)類型語言,所以Golang的類型轉(zhuǎn)換和C/C++ java等語言的類型轉(zhuǎn)換還有點(diǎn)區(qū)別,本文講通過一些簡單的示例帶大家深入了解一下Golang中的類型轉(zhuǎn)換,需要的可以參考下
    2023-05-05
  • 簡單聊聊Go?for?range中容易踩的坑

    簡單聊聊Go?for?range中容易踩的坑

    for循環(huán)問題,在面試中經(jīng)常都會(huì)被問到,并且在實(shí)際業(yè)務(wù)項(xiàng)目中也經(jīng)常用到for循環(huán),要是沒用好,一不下心就掉坑,本文就來講講Go?for?range中容易踩的坑吧
    2023-03-03
  • Go語言實(shí)現(xiàn)冒泡排序、選擇排序、快速排序及插入排序的方法

    Go語言實(shí)現(xiàn)冒泡排序、選擇排序、快速排序及插入排序的方法

    這篇文章主要介紹了Go語言實(shí)現(xiàn)冒泡排序、選擇排序、快速排序及插入排序的方法,以實(shí)例形式詳細(xì)分析了幾種常見的排序技巧與實(shí)現(xiàn)方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-02-02
  • Go語言中?Print?Printf和Println?的區(qū)別解析

    Go語言中?Print?Printf和Println?的區(qū)別解析

    這篇文章主要介紹了Go語言中?Print?Printf和Println?的區(qū)別,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Go語言執(zhí)行系統(tǒng)命令行命令的方法

    Go語言執(zhí)行系統(tǒng)命令行命令的方法

    這篇文章主要介紹了Go語言執(zhí)行系統(tǒng)命令行命令的方法,實(shí)例分析了Go語言操作系統(tǒng)命令行的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • 詳解如何在Golang中實(shí)現(xiàn)HMAC

    詳解如何在Golang中實(shí)現(xiàn)HMAC

    HMAC(Hash-based Message Authentication Code)是一種基于 Hash 函數(shù)和密鑰的消息認(rèn)證碼,HMAC將密鑰、消息和哈希函數(shù)一起使用,確保消息在傳輸過程中不被篡改,還可以驗(yàn)證消息的發(fā)送者身份,本文詳細(xì)講解了如何在Golang中實(shí)現(xiàn)HMAC,需要的朋友可以參考下
    2023-11-11
  • Go語言sync包與鎖實(shí)現(xiàn)限制線程對(duì)變量的訪問

    Go語言sync包與鎖實(shí)現(xiàn)限制線程對(duì)變量的訪問

    本文主要介紹了Go語言sync包與鎖實(shí)現(xiàn)限制線程對(duì)變量的訪問,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • golang定時(shí)器和超時(shí)的使用詳解

    golang定時(shí)器和超時(shí)的使用詳解

    這篇文章主要介紹了golang定時(shí)器和超時(shí)的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Golang匯編命令解讀及使用

    Golang匯編命令解讀及使用

    這篇文章主要介紹了Golang匯編命令解讀及命令使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Golang因Channel未關(guān)閉導(dǎo)致內(nèi)存泄漏的解決方案詳解

    Golang因Channel未關(guān)閉導(dǎo)致內(nèi)存泄漏的解決方案詳解

    這篇文章主要為大家詳細(xì)介紹了當(dāng)Golang因Channel未關(guān)閉導(dǎo)致內(nèi)存泄漏時(shí)蓋如何解決,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-07-07

最新評(píng)論