4.1.3游戏界面
当进入游戏窗口后,只要玩家点击菜单栏下的“游戏动作→开始游戏”选项或“ENTER”键,就可以开始游戏。蛇的初始位置为游戏场地的中心,颜色为黑色;食物为随机产生,颜色为红色;游戏背景为绿色,界面右侧为两个显示窗口为黑色,上面框实时显示摄食数、分数、当前所在的级数;下面框显示操作属性,方便玩家。整个游戏框架按红、黑、绿三色设计。
游戏开始后,蛇通过蛇头headPoint获取下一个位置,然后将下一个点绘制成蛇体新蛇头,而同时蛇尾则绘制成游戏框架GameFrame的一部分,从而实现了蛇体不断向前移动的效果。当蛇遇到食物时,蛇头headPoint与食物foodPoint重合,使其绘制成为新的蛇头,然后又重新随机产生一个食物。当蛇吃够20个食物时,也就是分数达到200时,游戏会暂停,提示玩家选择下一关进行游戏。当蛇头碰到自身或是碰到墙壁时,则游戏暂停,系统提示玩家是否重新开始游戏。如果选择“否”,则游戏结束,否则游戏重新开始。
4.2 软件实现
程序结构由一个Form,两个Class实现。FormMain是程序主界面,里面就一个PictureBox控件。Block类是“蛇块”类,这个类就是用于描述蛇身子一节一节的信息,从运行效果图上可以看到就是那一个一个小方块的信息。Palette类就是主画布,是游戏的主要代码。
4.2.1 FormMain结构
从工具栏里拖放一个picturebox到FormMain上面,设置属性。
picturebox1的BorderStyle属性选择为FixedSingle,这样能显示边框。FormMain的KeyPreview属性设定为True,这样整个窗体可以响应键盘按键事件设定完[1]。
(1)添加pictureBox1和FormMain的事件,添加的事件有picturesBox1的Paint事件pictureBox1_Paint;FormMain的KeyDown事件FormMain_KeyDown;FormMain的Load事件FormMain_Load。pictureBox1_Paint用于更新游戏。FormMain_KeyDown用于响应用户按键,FormMain_Load用于做一些初始化的作[2]。本文来自辣*文`论'文&网,
毕业论文 www.751com.cn 加7位QQ324~9114找原文
(2)添加Block类和Palette类
(3)实现Block类
Block类用于描述蛇块信息,记录每个蛇块的坐标,颜色,以及大小这些信息。
在这个类,Point p用于记录该蛇块的“坐标”,注意这里的坐标不是真正的坐标,由于蛇块是一个块,不是一个点,这里记录的是这个块的坐标,比如,如果是Point(3,2),那么就是表示第四列,第三行的那个块。
Paint函数根据坐标以及蛇块大小计算出实际绘图的坐标,进行绘图,蛇块是一个正方形(矩形),我们用矩形绘制,在代码中我们看到,绘制的大小比size小1个像素,这么做的原因是为了突出蛇块与蛇块之间的间隙,也就是说蛇块与蛇块之间有1个像素的间隙,这就是我们看到游戏效果图中的蛇块是一段一段[3].
4.2.2 Palette类的实现
Palette类是真个游戏的核心处理类,里面定义了画布的大小,背景色,蛇块列表以及游戏速度,移动方向等属性。另外还提供了timer计时器,用于定时更新蛇块坐标位置,以及如何在画面上画图的函数。
从函数定义中我们可以大致了解一下这个类的功能以及实现方法了,类的属性定义就不再说了。接下来我们一步一步介绍各个函数的实现。
(1)Start函数
Start函数用于开始游戏,这个函数的内部其实就是设定食物,以及触发计时器。
这里面定义了计时器的事件触发间隔,是通过level然后找到speed数组里的对应毫秒值设定的。然后触发事件是OnBlockTimedEvent,这个函数后面再讲。最后是启动计时器开始计时[7]。
(2) OnBlockTimedEvent函数
OnBlockTimedEvent函数是计时器的执行函数,这个函数用于更新蛇块信息列表,以及检测游戏是否结束等等。
我们可以看到,函数内部调用了两个函数,一个是Move函数,一个是CheckDead函数[6]。
上一页 [1] [2] [3] [4] [5] 下一页
C#的贪吃蛇游戏设计+需求分析+概要设计 第4页下载如图片无法显示或论文不完整,请联系qq752018766