《结对-贪吃蛇-开发过程》

-  -  -  -  -  -  -  项 目 地 址  -  -  -  -  -  -  -  -  -  -  

码云的地址: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)如何增加蛇的速度——蛇的运行速度与周期长短有关。周期短,速度变快;周期长,速度变慢。

posted @ 2017-09-26 12:00  Among  阅读(218)  评论(1编辑  收藏  举报