《结对-贪吃蛇-开发过程》
- - - - - - - 项 目 地 址 - - - - - - - - - -
码云的地址:https://gitee.com/ningshuyoumeng/JieDuiBianCheng-TanChiShe-DaiMa(名为snakenew_Game.zip的压缩包)
GitHub的地址:
- - - - - - - 初步完成功能模块 - - - - - - - -
1.关于界面的设计:
1)蛇体本身;2)界面(窗口)
2.蛇体具体实现:
1)蛇体模型作为主要的数据结构刻画贪吃蛇;
2)控制模块主要接受来自键盘的输入,然后变更蛇体模型;
3)界面更新模块根据蛇体模型的变化,重新刷新界面,从而产生动画的效果;
3.蛇的移动(模块之间的交互与联系):
1)控制模块监听来自键盘的输入;
2)一旦接受到输入,那么改变蛇体模块中的相应数据;
3)蛇体模型与界面更新之间采用观察者模式,也即界面更新模块观察蛇体模型模块,而蛇体模型模块一旦每隔n*100毫秒(控制线程)发生变化后,要告知界面更新;
4)要判断蛇的移动是否合法,(头部是头部,尾部是尾部,不能头尾都可以向前移动)
- - - - - - - - - 接下来的设计思路 - - - - - - - - - - - - -
4.食物的生成:
1)由于食物和蛇体都是有一个一个小格子组成,可以用高和宽来表示
2)初始化实物出现的位置(在这里应该是随机出现在屏幕上)
3)当蛇吃到食物后,再次在屏幕上重新生成食物。
5.游戏核心:
1)对于吃食物的判断:
蛇头移动后,判断变化后的蛇头位置是否落在食物上,即:if语句做判断—— 如果是的话,就将变化后的蛇头增加到蛇体队列的头部,完成吃食物的过程。
2)对于咬到自己的判断:
吃到食物判断为否的情况下,只要再判断变动后的高和宽对应方块的max值是否为1即可,如果值为1的话,那么就是蛇咬到自己了。
3)对于吃到墙的判断:
是否撞到墙,只需要将变动后的高和宽值与墙的边界比较,超出边界自然是吃到墙了;
6.其余功能(思考):
1)使游戏中途停止—
i. 控制线程,使线程延长无线毫秒(偷工减料的发法)
ii 不刷新页面(包括蛇体和食物)“暂时就是这么想的”
2)如何增加蛇的速度——蛇的运行速度与周期长短有关。周期短,速度变快;周期长,速度变慢。