1、 C+课程设计报告 (贪吃蛇游戏的实现) 院 系:计算机工程系 专 业: 软件工程 学 号: 姓 名: 目录目录 一、应用程序的最终界面一、应用程序的最终界面 1.11.1 选题背景选题背景 1.21.2 关于编译软件关于编译软件 1.31.3 关于兼容性关于兼容性 二、概要设计二、概要设计 2.12.1 程序流程程序流程与思路与思路 三、软件实现三、软件实现 3.13.1 变量函数的声明变量函数的声明 3.23.2 主要功能的实现主要功能的实现 3.2.13.2.1 初始化食物初始化食物 3.2.23.2.2 游戏控制游戏控制 四、结果与讨论四、结果与讨论 4.4.1 1 错误调试与分析错误
2、调试与分析 4.4.2 2 程序的缺陷程序的缺陷 五、总结展望五、总结展望 一、应用程序的最终界一、应用程序的最终界面面 本游戏是通过键盘的方向键来控制贪吃蛇的运动的,最终运行所产生的界面效果如下 1.1.选题背景选题背景 贪吃蛇是家喻户晓的益智类小游戏,选择这个题目一是为了将自己的所学知识加以运 用, 二是一直以来贪吃蛇这个游戏就深深地吸引着我, 它的制作方法对于以前的我而言都是 很神秘的。我希望通过自己的所学知识把它剖析开来,真真正正的了解它的本质和精髓。虽 然我的编程能力不是很强, 但是我有信心, 在这次学习中我将从实践和实际的项目中提高自 己的编程能力。因此我选定了这个题目。 1.2
3、关于编译软件关于编译软件 本程序采用 Microsoft Visual C+6.0 的中文版本进行编译。 VisualC+6.0 是 Microsoft 公 司推出的基于 Windows 操作系统的可视化 C+编程工具,尽管 Microsoft 公司推出了.NET 平台的集成开发环境,但由于其良好的界面和可操作性,加上支持标准 C/C+规范,但仍有 相当多的编程人员使用 VisualC+6.0 进行应用系统的开发。 第二章第二章 概要设计概要设计 2.1 软件主要功能设计软件主要功能设计 2.1.1 程序程序思路思路 在数据结构上,用数组存储蛇以及蛇的运动区域。在数组中,每个元素有四个云感 动
4、方向,分别为 RIGHT,LEFT,UP,DOWN.在没有蛇身的区域,数组的元素值为 0。在蛇身的每 个节点, 用一个数组元素存储当前蛇节点的运动方向。 通过改变数组中元素的值来表示蛇身 的移动。在程序中运用定时器来保证蛇的持续移动。每个一定的时间间隔,蛇移动一格。 在设计界面时。在 Visual Studio C+6.0 的环境下,由于目前自己的水平有限,所以 游戏界面依然是基于 DOS 实现贪食蛇运行算法。在界面中用*中画出一个矩形,在由大* 组成的矩形中,用 20x20 的像素单位表示每一个蛇的节点。当数组节点的值不为0 的时候, 在*矩形框中表示出相应的蛇的节点。并在蛇每移动一小格的时
5、候,重绘整个窗口。在对蛇 身进行绘画时。通过数组元素的值将蛇身在对话框的矩形中显示出来。 在蛇身运动时, 首先在蛇头位置蛇身增长一个节点, 然后判断蛇头是否到达食物所在位 置, 若在食物所在位置, 则蛇尾不减一, 蛇身继续移动, 若蛇头不在食物位置, 则蛇尾减一, 蛇身继续移动。若蛇头越界或者蛇头与蛇身重叠,则游戏结束。 2.1.2 程序流程图 按 w a s d 控制方向 头部是否与food重合 将 food 添加到蛇身 中并产生新 food 出界 与自身相交 交 移动一格 更新运动方向 运行游戏 Y N N Y N Y Return false Return ture 3.13.1 函数声
6、明函数声明 void Fence:InitFence()void Fence:InitFence()/画框框画框框; ; void Fence:OutputF()void Fence:OutputF()/显示框框显示框框; ; void SnakeNode:add_head(int x,int y)void SnakeNode:add_head(int x,int y) /插入头结点插入头结点; ; void SnakeNode:delete_tail()void SnakeNode:delete_tail()/删除尾结点删除尾结点; ; void move:moving()void move:moving() void change_point(char); /void change_point(char); /改变方向改变方向; ; void get_food();/做种子做种子(程序运行时间程序运行时间); 3.2.13.2.1 初始化食物初始化食物 确定用点数组存储