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

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

 更新時間:2022年07月21日 11:00:37   作者:黑胡子Z  
這篇文章主要為大家介紹了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 手寫貪吃蛇的資料請關注腳本之家其它相關文章!

相關文章

  • 一文帶你吃透Golang中的類型轉換

    一文帶你吃透Golang中的類型轉換

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

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

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

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

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

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

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

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

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

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

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

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

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

    golang定時器和超時的使用詳解

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

    Golang匯編命令解讀及使用

    這篇文章主要介紹了Golang匯編命令解讀及命令使用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • Golang因Channel未關閉導致內存泄漏的解決方案詳解

    Golang因Channel未關閉導致內存泄漏的解決方案詳解

    這篇文章主要為大家詳細介紹了當Golang因Channel未關閉導致內存泄漏時蓋如何解決,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2023-07-07

最新評論