亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

背景

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

需求構(gòu)思

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

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

邏輯構(gòu)思

元素及用戶(hù)故事都確定了, 就要開(kāi)始寫(xiě)代碼嗎? 寫(xiě)項(xiàng)目不是這樣的!要踐行以終為始(很重要!, 否則可能會(huì)造成代碼的荒草叢生), 先去思考一下我們的代碼結(jié)構(gòu)是什么樣子的.

以手持游戲機(jī)為例.

游戲機(jī)其實(shí)就是一個(gè)服務(wù)(Service), 然后屏幕和鍵盤(pán)統(tǒng)一由游戲機(jī)調(diào)配.

  • 屏幕(provider)
  • 鍵盤(pán)控制(provider)

然后我們細(xì)分一下屏幕和鍵盤(pán)控制的元素:

  • 屏幕: 蛇,食物,屏幕寬及高,得分.
  • 鍵盤(pán)控制: 用戶(hù)移動(dòng)指令,用戶(hù)退出指令, 蛇死亡指令.

代碼結(jié)構(gòu)

//game control 游戲數(shù)據(jù)結(jié)構(gòu)
type game struct {
   //控制
   control *control
   //屏幕
   screen *screen
}
//control 鍵盤(pán)控制
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)寫(xiě)的還算清晰,所以不放過(guò)多代碼了, 只是把一個(gè)全局的結(jié)構(gòu)圖景放到這里, 留給你去探索. 這個(gè)小項(xiàng)目的代碼邏輯肯定還不完善,你如果有什么想法或者吐槽, 可以在下方留言,每個(gè)我都會(huì)認(rèn)真閱讀和回復(fù).??

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

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

相關(guān)文章

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

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

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

    簡(jiǎn)單聊聊Go?for?range中容易踩的坑

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

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

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

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

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

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

    這篇文章主要介紹了Go語(yǔ)言執(zhí)行系統(tǒng)命令行命令的方法,實(shí)例分析了Go語(yǔ)言操作系統(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ù)一起使用,確保消息在傳輸過(guò)程中不被篡改,還可以驗(yàn)證消息的發(fā)送者身份,本文詳細(xì)講解了如何在Golang中實(shí)現(xiàn)HMAC,需要的朋友可以參考下
    2023-11-11
  • Go語(yǔ)言sync包與鎖實(shí)現(xiàn)限制線程對(duì)變量的訪問(wèn)

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

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

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

    這篇文章主要介紹了golang定時(shí)器和超時(shí)的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    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)論