图(12.1) 图(12.2)
和上图相比,我们会发现其实就是蛇头变成了一个新的蛇头了,原来的舌头变成是蛇身,原来的蛇尾没有了,改成蛇尾前一个蛇块了,所以通过这个分析我们可以得到如何移动的解决方案,就是在ArrayList的0下标处插入一个新的蛇块(蛇头),然后把原来最后一个(Count-1)的那个蛇块(蛇尾)去掉。
实际代码中增加了吃食物的情况判断,也就是说如果新蛇头的坐标和食物的坐标一致,那么就不做删除原蛇尾的操作了,这样产生的效果就是蛇块列表的长度增加了一个,达到吃食物变长的效果[8]。
(5) GetFood函数
GetFood函数用于生成下一个食物,其实就是一个蛇块,生成的规则就是,坐标要在画布范围内,并且食物的坐标不能和贪吃蛇的坐标重合。
通过for循环检查食物坐标是否和贪吃蛇的蛇块列表ArrayList里的蛇块有冲突。
(6) PaintPalette函数
PaintPalette函数需要一个参数,也就是绘图句柄,然后在这个画布上画图也就是我们看到的游戏效果。
首先用背景色清空画布,然后画食物,其次是通过for循环将贪吃蛇的每个蛇块画在画布上,以此达到游戏效果[4]。
(7)构造函数
构造函数就是设定类属性值,及初始化蛇块列表ArrayList,然后需要说明的是手动生成一个蛇块放到列表里面。“ this._blocks.Insert(0, (new Block(Color.Red, this._size, new Point(width / 2, height / 2))))”语句是在画布的正中央产生一个只有一节的贪吃蛇。到此贪吃蛇的核心代码就算介绍完了[5]。
4.2.3 主界面的实现
在page_load里实现初始化贪吃蛇
FormMain_KeyDown函数,函数用于更改贪吃蛇的移动方向,这里设定了上下左右键,更改移动方向的前提就是新的方向不能和当前方向相反,也即是只能90度拐弯,不能180度拐弯[10]。
最后一个函数是pictureBox1_Paint函数,这个事件在pictureBox1需要重新绘制的时候发生,这里面只要简单调用一下让贪吃蛇重新绘制一下游戏就行了。
5.游戏测试
5.1 测试的意义
游戏测试是为了发现错误而执行程序的过程,成功的测试是发现了至今尚未发现的错误的测试。测试的目的就是希望能以最少的人力和时间发现潜在的各种错误和缺陷。游戏测试是保证系统质量和可靠性的关键步骤,是对游戏开发过程中的系统分析游戏设计和实施的最后复查。
5.2 测试过程
(1)拟定测试计划。根据游戏的总体情况,仔细分析游戏各个步骤的运行可
能出现的状况,对各种情况进行汇总,然后拟定出一份具体测试步骤。本文来自辣*文`论'文&网,毕业论文 www.751com.cn 加7位QQ324~9114找原文
(2)初步测试。根据拟定好的计划进行游戏调试,出现意外情况时及时记录。
测试完后对所记录的意外情况进行分析,然后提出改进的方案,再进行修改。
(3)深度测试。对游戏进行最后的修改确认没有漏洞后再进行测试,从各个
方面进行一次整体的排查,知道不再出现意料之外的情况。
(4)测试人员。测试初级阶段主要由游戏主要编程员进行测试,以便能够全
面的进行一次错误排查。然后由不同的玩家进行测试,集众人之益,能够从不同的角度发现问题,以便更好地改进[9]。