贪吃蛇实验报告.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
《计算机程序设计》课程设计报告 课 题 名 称 贪吃蛇游戏 班 级 学 号 姓 名 指 导 教 师 设 计 时 间 至 设 计 地 点 常熟理工学院计算机科学与工程学院 目录 1 需求分析 1 2 系统分析和设计 1 2.1 数据结构的设计和选择的理由 1 2.2 系统模块划分和模块结构 2 2.3 流程图 3 2.4 数据类型、全局变量和函数说明 3 3 程序测试和运行结果 4 4 课程报告小结 5 4.1分数重叠显示 5 4.2速度太快 5 4.3食物可能出现在蛇身上 5 附录A:程序源代码 6 1 需求分析 【阐述课程设计应该完成的功能】 使用键盘的上下左右,来控制蛇的运动方向,ESC键退出,并显示得分。 2 系统分析和设计 2.1 数据结构的设计和选择的理由 本游戏中涉及的主要数据结构是如何表示运动的蛇、食物状态等问题。 2.1.1 从游戏参考画面中我们可以看到,贪吃蛇的身体是一节节的,由一个个大小相同的方块 组成,那么我们可以用一个(x,y)坐标为左上角的、固定宽度的正方形来表示一节蛇身。 为表示连续的多节身体,那么我们可以采用数组(或链表,或线性表)等数据结构来表 示。下面以数组方式为例: struct Point { int x, y; } struct Point nodes[MAX_LENGTH]; //蛇身数组,MAX_LENGTH为最大蛇长 贪吃蛇是在不断的运动的,我们研究蛇的运动可以发现这样的特点: 1. 蛇头由键盘控制,键盘不操作时,保持原有方向运动;(用 int direction;表示) 2. 运动时,蛇身后面一节移动到前面一节的位置。当我们用nodes[0]表示蛇头的时候,no des[1]运动到nodes[0]处;nodes[2]运动到nodes[1]处...。 3. 吃到一个食物以后,蛇身会增加一节。即该数组中的有效数据个数加一。(用int length;表示) 根据上面的情况,我们可以设计蛇的数据结构如下: struct Snake { struct Point nodes[MAX_LENGTH]; //蛇身数组,保存每节蛇身的坐标。MAX_LENGTH为最大蛇长 int length; //当前蛇长 int direction; //蛇头运动方向 int live; //蛇活的,还是已经死了? } 2.1.2 关于食物,有两个属性: 1. 坐标位置 2. 状态:存在,或被吃。 故我们用以下结构表示: struct Food { struct Point position; //食物的位置 int exist; //存在?还是被吃? } 2.2 系统模块划分和模块结构 void main() { init(); /*初始化*/ l=1; while(l) /*循环游戏*/ { select(); /*游戏速度和结束的选择菜单*/ gamePlay(); /*游戏主程序*/ } close(); /*关闭游戏*/ } 2.3 流程图 2.4 数据类型、全局变量和函数说明 2.4.1数据类型 struct Point { /*一个存放点坐标的结构体*/ int x, y; /*被多个结构体调用的基本参数,所以统一用point结构体来表示*/ }; struct Snake { /*用来模拟蛇状态的结构体*/ struct Point nodes[MAX_LENGTH]; /*用来存放蛇每一节的位置*/ int length; /*蛇长*/ int direction; /*蛇移动的方向*/ int live; /*蛇是否活着*/ } snake; /*比较形象的把蛇抽象为一个数据类型*/ struct Food { /*用来模拟食物状态的结构体*/ struct Point position; /*食物的位置*/ int exist; /*食物是否存在*/ } food; 2.4.2全局变量 Score \\得分 left,top,right,bottom \\游戏区域范围 lastx,lasty \\用来保存最后一节蛇的位置 keyCode \\用来保存按下的键 2.4.3函数说明 void init(void); \\初始化程序,给一些初始值赋值 void gamePlay(void); \\游戏主循环 void close(void); \\关闭游戏 void drawWall(void); \\画墙 void createFood(void); \\创造一个食物 void drawFood(void); \\画出食物 void drawSnake(void); \\画出蛇 void drawScore(void); \\画出分数 int touchWall(void); \\判断是否碰
剩余18页未读,继续阅读
- 粉丝: 168
- 资源: 3万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助