最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)文章

  • Go Module常用命令及如何使用Go Module

    Go Module常用命令及如何使用Go Module

    go module是go官方自帶的go依賴(lài)管理庫(kù),在1.13版本正式推薦使用,這篇文章主要介紹了Go Module常用命令及如何使用Go Module,需要的朋友可以參考下
    2024-02-02
  • Go語(yǔ)言的反射reflect使用大全

    Go語(yǔ)言的反射reflect使用大全

    Go語(yǔ)言中reflect包提供了運(yùn)行時(shí)反射的功能,本文主要介紹了Go語(yǔ)言的反射reflect使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • Go語(yǔ)言中常用json處理操作小結(jié)

    Go語(yǔ)言中常用json處理操作小結(jié)

    在?Go?中,你可以使用內(nèi)置的?encoding/json?包來(lái)處理?JSON?格式數(shù)據(jù),本文整理了一些常見(jiàn)的?JSON?處理操作,希望對(duì)大家有所幫助
    2024-04-04
  • 一文詳解Golang中的基礎(chǔ)語(yǔ)法

    一文詳解Golang中的基礎(chǔ)語(yǔ)法

    這篇文章主要為大家詳細(xì)介紹了Golang中基礎(chǔ)語(yǔ)法的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Golang有一定的幫助,感興趣的可以了解一下
    2023-03-03
  • Golang解析yaml文件的方法小結(jié)

    Golang解析yaml文件的方法小結(jié)

    Go 語(yǔ)言沒(méi)有內(nèi)置解析 yaml 文件的功能,實(shí)現(xiàn) yaml 的解析可以使用第三方庫(kù),下面我們就來(lái)看看如何使用opkg.in/yaml.v2 和 gopkg.in/yaml.v3實(shí)現(xiàn)解析yaml吧
    2024-11-11
  • 一文帶你學(xué)會(huì)Go?select語(yǔ)句輕松實(shí)現(xiàn)高效并發(fā)

    一文帶你學(xué)會(huì)Go?select語(yǔ)句輕松實(shí)現(xiàn)高效并發(fā)

    這篇文章主要為大家詳細(xì)介紹了Golang中select語(yǔ)句的用法,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Golang有一定的幫助,需要的可以參考一下
    2023-03-03
  • 讓Go反射變快的方法實(shí)例探究

    讓Go反射變快的方法實(shí)例探究

    反射允許你在運(yùn)行時(shí)獲得有關(guān) Go 類(lèi)型的信息,如果你曾經(jīng)愚蠢地嘗試編寫(xiě) json.Unmarshal 之類(lèi)的新版本,本文將探討的就是如何使用反射來(lái)填充結(jié)構(gòu)體值
    2024-01-01
  • Go?Excelize?API源碼閱讀Close及NewSheet方法示例解析

    Go?Excelize?API源碼閱讀Close及NewSheet方法示例解析

    這篇文章主要為大家介紹了Go?Excelize?API源碼閱讀Close及NewSheet方法示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • golang數(shù)組-----尋找數(shù)組中缺失的整數(shù)方法

    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)

    這篇文章主要介紹了Golang 使用map需要注意的幾個(gè)點(diǎn),幫助大家更好的理解和學(xué)習(xí)golang,感興趣的朋友可以了解下
    2020-09-09

最新評(píng)論

丘北县| 太仆寺旗| 中山市| 铜川市| 铜陵市| 社会| 南陵县| 富顺县| 当雄县| 白山市| 白山市| 保亭| 永登县| 台江县| 北碚区| 白山市| 定西市| 蓬莱市| 东城区| 高州市| 娱乐| 沅江市| 石柱| 大足县| 新绛县| 康定县| 黎城县| 玉环县| 海丰县| 满城县| 虹口区| 监利县| 正安县| 加查县| 乌鲁木齐市| 东源县| 陇南市| 邮箱| 阿图什市| 和林格尔县| 宁河县|