背景
题主如今是php程序员,学了一周的golang,深刻的感遭到了其特点的高贵及功能的强悍,为了提高熟练度,决定来写个贪吃蛇来弘扬下.(顶部有github项目链接)
需求构思
1. 确定元素
- 蛇
- 墙
- 食物
- 分数
- 基本的提示信息
2. 用户故事
- 蛇撞墙, 死亡
- 蛇吃蛋分数加1, 身体增加一格长度.
- 点击键盘左键, 蛇向左走
- 点击键盘右键, 蛇向右走
- 点击键盘上键, 蛇向上走
- 点击键盘下键, 蛇向下走
- 点esc, 退出游戏
逻辑构思
元素及用户故事都确定了,就要开始写代码吗?写项目不是这样的!要弘扬以终为始(很重要!,否则可能会导致代码的浓荫丛生),先去思索一下我们的代码结构是哪些样子的.
以手持游戏机为例.
之后我们细分一下屏幕和鼠标控制的元素:
代码结构
//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哦):
本作品采用《CC合同》,转载必须标明作者和本文链接
© 版权声明
本站下载的源码均来自公开网络收集转发二次开发而来,
若侵犯了您的合法权益,请来信通知我们1413333033@qq.com,
我们会及时删除,给您带来的不便,我们深表歉意。
下载用户仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,访问及下载者下载默认同意本站声明的免责申明,请合理使用切勿商用。
THE END
暂无评论内容