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

golang?手寫貪吃蛇示例實現

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

背景

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

需求構思

1. 確定元素
    - 蛇
    - 墻
    - 食物
    - 分數
    - 基本的提示信息

2. 用戶故事
    - 蛇撞墻, 死亡
    - 蛇吃蛋分數加1, 身體增加一格長度.
    - 點擊鍵盤左鍵, 蛇向左走
    - 點擊鍵盤右鍵, 蛇向右走
    - 點擊鍵盤上鍵, 蛇向上走
    - 點擊鍵盤下鍵, 蛇向下走
    - 點esc, 退出游戲

邏輯構思

元素及用戶故事都確定了, 就要開始寫代碼嗎? 寫項目不是這樣的!要踐行以終為始(很重要!, 否則可能會造成代碼的荒草叢生), 先去思考一下我們的代碼結構是什么樣子的.

以手持游戲機為例.

游戲機其實就是一個服務(Service), 然后屏幕和鍵盤統(tǒng)一由游戲機調配.

  • 屏幕(provider)
  • 鍵盤控制(provider)

然后我們細分一下屏幕和鍵盤控制的元素:

  • 屏幕: 蛇,食物,屏幕寬及高,得分.
  • 鍵盤控制: 用戶移動指令,用戶退出指令, 蛇死亡指令.

代碼結構

//game control 游戲數據結構
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 屏幕相關參數
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 手寫貪吃蛇示例實現的詳細內容,更多關于golang 手寫貪吃蛇的資料請關注腳本之家其它相關文章!

相關文章

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

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

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

    Go語言的反射reflect使用大全

    Go語言中reflect包提供了運行時反射的功能,本文主要介紹了Go語言的反射reflect使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-08-08
  • Go語言中常用json處理操作小結

    Go語言中常用json處理操作小結

    在?Go?中,你可以使用內置的?encoding/json?包來處理?JSON?格式數據,本文整理了一些常見的?JSON?處理操作,希望對大家有所幫助
    2024-04-04
  • 一文詳解Golang中的基礎語法

    一文詳解Golang中的基礎語法

    這篇文章主要為大家詳細介紹了Golang中基礎語法的相關知識,文中的示例代碼講解詳細,對我們學習Golang有一定的幫助,感興趣的可以了解一下
    2023-03-03
  • Golang解析yaml文件的方法小結

    Golang解析yaml文件的方法小結

    Go 語言沒有內置解析 yaml 文件的功能,實現 yaml 的解析可以使用第三方庫,下面我們就來看看如何使用opkg.in/yaml.v2 和 gopkg.in/yaml.v3實現解析yaml吧
    2024-11-11
  • 一文帶你學會Go?select語句輕松實現高效并發(fā)

    一文帶你學會Go?select語句輕松實現高效并發(fā)

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

    讓Go反射變快的方法實例探究

    反射允許你在運行時獲得有關 Go 類型的信息,如果你曾經愚蠢地嘗試編寫 json.Unmarshal 之類的新版本,本文將探討的就是如何使用反射來填充結構體值
    2024-01-01
  • Go?Excelize?API源碼閱讀Close及NewSheet方法示例解析

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

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

    golang數組-----尋找數組中缺失的整數方法

    這篇文章主要介紹了golang數組-----尋找數組中缺失的整數方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Golang 使用map需要注意的幾個點

    Golang 使用map需要注意的幾個點

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

最新評論

仙桃市| 台北县| 贵溪市| 光泽县| 两当县| 云龙县| 永吉县| 增城市| 海林市| 仁化县| 巴林左旗| 双辽市| 彰化市| 大渡口区| 同心县| 眉山市| 年辖:市辖区| 夏津县| 高清| 遂川县| 西丰县| 崇信县| 道真| 精河县| 临沧市| 鹤岗市| 新竹市| 屏山县| 沧州市| 台北市| 卢湾区| 饶平县| 长顺县| 玛曲县| 灵宝市| 额济纳旗| 商水县| 深水埗区| 青田县| 武冈市| 荔波县|