golang 手写贪吃蛇示例实现

 更新时间:2022年07月21日 11:00:37   作者:黑胡子Z  
这篇文章主要为大家介绍了golang 手写贪吃蛇示例实现,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

背景

题主现在是php程序员, 学了一周的golang, 深刻的感受到了其特性的优雅及功能的强大, 为了增强熟练度, 决定来写个贪吃蛇来践行下.(底部有github项目链接)

需求构思

1. 确定元素
    - 蛇
    - 墙
    - 食物
    - 分数
    - 基本的提示信息

2. 用户故事
    - 蛇撞墙, 死亡
    - 蛇吃蛋分数加1, 身体增加一格长度.
    - 点击键盘左键, 蛇向左走
    - 点击键盘右键, 蛇向右走
    - 点击键盘上键, 蛇向上走
    - 点击键盘下键, 蛇向下走
    - 点esc, 退出游戏

逻辑构思

元素及用户故事都确定了, 就要开始写代码吗? 写项目不是这样的!要践行以终为始(很重要!, 否则可能会造成代码的荒草丛生), 先去思考一下我们的代码结构是什么样子的.

以手持游戏机为例.

游戏机其实就是一个服务(Service), 然后屏幕和键盘统一由游戏机调配.

  • 屏幕(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 手写贪吃蛇的资料请关注脚本之家其它相关文章!

相关文章

  • golang 通过ssh代理连接mysql的操作

    golang 通过ssh代理连接mysql的操作

    这篇文章主要介绍了golang 通过ssh代理连接mysql的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Go 基本数据类型与字符串相互转换方法小结

    Go 基本数据类型与字符串相互转换方法小结

    这篇文章主要介绍了Go基本数据类型与字符串相互转换,将string类型转换成基本类型时,必须确保string类型是有效的,文中补充介绍了Go基本数据类型和其字符串表示之间转换,结合实例代码给大家讲解的非常详细,需要的朋友可以参考下
    2024-01-01
  • 详解简单高效的Go struct优化

    详解简单高效的Go struct优化

    这篇文章主要为大家介绍了简单高效的Go struct优化示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • 使用Go语言编写一个简单的Web框架

    使用Go语言编写一个简单的Web框架

    Go语言(又称Golang)因其高效的性能和简洁的语法,在编写Web框架方面表现出色,下面将详细介绍如何使用Go语言编写一个简单的Web框架,文中有详细的代码供大家参考,需要的朋友可以参考下
    2024-05-05
  • Golang有类型常量和无类型常量的区别

    Golang有类型常量和无类型常量的区别

    本文主要介绍了Golang有类型常量和无类型常量的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Go 泛型和非泛型代码详解

    Go 泛型和非泛型代码详解

    Go 在 1.17 中支持泛型,但是默认未开启;1.18 中会正式支持泛型,下面文章内容小编将给大家讲解Go 语言中的泛型和非泛型并且附上代码详解,刚兴趣的小伙伴请参考下面文章的具体内容
    2021-10-10
  • Go语言实现对XML的读取和修改

    Go语言实现对XML的读取和修改

    这篇文章主要为大家详细介绍了Go语言实现对XML的读取和修改的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • Golang中的Unicode与字符串示例详解

    Golang中的Unicode与字符串示例详解

    这篇文章主要给大家介绍了关于Golang中Unicode与字符串的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Golang具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-05-05
  • Go语言数据结构之单链表的实例详解

    Go语言数据结构之单链表的实例详解

    链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。本文将通过五个例题带大家深入了解Go语言中单链表的用法,感兴趣的可以了解一下
    2022-08-08
  • 详解go mod 使用方法

    详解go mod 使用方法

    golang 提供了 go mod命令来管理包,是go的一个模块管理工具,用来代替传统的GOPATH方案,本文给大家介绍go mod 使用方法,感兴趣的朋友一起看看吧
    2022-05-05

最新评论