确定项目内容、目标、实现计划
- 贪吃蛇,我相信很多人都玩过,就是一开始蛇只有几格长度,画面上会随机产生格子,玩家可以通过方向键控制蛇前进的方向,只要蛇头碰到那个格子,蛇身的长度就会相应加长一个格子,并且获得相应加分。当蛇头到边后会从另一边出来,如果蛇头碰到蛇身就算游戏结束。
- 最简单的一个设计思路是,用一个线程,产生随机格子,通过while(true)死循环来实现不断的产生,在循环体里通过sleep();让线程睡一断时间,让玩家有时间去吃。这个时间随着游戏进度相应变人,是一个变量;别外用一个线程来产生蛇,也是通过while(true)死循环来实现蛇的不断前进,每一次循环画出一次蛇,蛇的结点用Vector v1集合来存储,通过遍历集合画出所有的点,当遍历第一点时先用一组变量(nextpointX,nextpointY)将其结点值保存(因为后面的点都是重复前一个点的轨迹),按照指定的方向加上一格然后将其画出,后面的结点都先画前一个结点(nextpointX,nextpointY)的值,然后将自身结点值保存到变量(nextpointX,nextpointY)中。每一个点画出后,顺序将其结点值保存到另一个Vector v2中。在遍历玩以后(从头到尾画完一条蛇),先将v1清空,然后顺序将v2中的值保存到v1中,便于下一次画,接着清空v2便于下一次暂存。(其实到这完全可以用一个集合实现,因为Vector的add方法总是将元素加到最后,循环遍历那样也可以实现蛇前进,但是为了要区分蛇头与蛇尾结点,就必须要在蛇尾加存一个值表示蛇尾,另外还要设计一个标志位来判断画出的结点是否是蛇头,因为蛇头不是画前面点的值,而是要按移动方向加一格。这样设计出来就有点复杂了,所以我选择了两个集合。)程序流程图如下。
- 吃一个点的情况在蛇头移动方向后判断其X或Y安原方向再加WIDTH后是否与随机点的XX,YY坐标相等,如果相等则设置标志位为true,在画出头结点后判断标志位是否为true,是的话也将XX,YY加入v2,然后再将X,Y加入v2。
- 而蛇头碰到蛇身的情况,是在画出X,Y后,同样遍历一次v1,看X,Y是否与v1中的某一个值相等,如果相等通过break语句跳出循环,结束游戏。
- 还有一种情况就是随机点不可以产生在蛇身处,我的想法也是在产生随机点时遍历v1,如果相等,则重新生成一个。
改进措施
- 加快项目进程,注意小组合作,在程序最基本的功能上进行最大程度的提升和优化,实现最大价值,给用户最佳体验。
- 本周基本实现了贪吃蛇项目的框架构建,在未来几周里,我们将完善代码,使代码完整可运行,并将完成代码测试。
- 充分实践之前几次实验中的代码重构、及单元测试,体会他们带来的好处。
posted @
2016-05-22 22:00
迦瓦栈队
阅读(
198)
评论()
编辑
收藏
举报