1、 课程设计报告课程设计报告 课程名称课程名称 C 语言课程设计语言课程设计 设计题目设计题目 贪吃蛇游戏贪吃蛇游戏 2012 年 10 月 11 日 1.1.设计目的设计目的 本课程设计的目的就是要通过一次集中的强化训练,使学生能及时巩固已学 的知识,补充未学的但又必要的内容。进行课程设计目的在于加深对程序设计基 础中基础理论和基本知识的理解,促进理论与实践的结合,进一步提高程序设计 的能力。具体目的如下: 1使学生更深入地理解和掌握该课程中的有关基本概念,程序设计思想和 方法。 2培养学生综合运用所学知识独立完成课题的能力。 3培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理
2、论,全方位考虑问题等科学技术人员应具有的素质。 4提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基 本素质。 5培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经 验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。 6对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计 能力、书面及口头表达能力进行考核。 2.2.设计题目及要求设计题目及要求 【1】设计题目 贪吃蛇游戏 【2】要求 实现如下功能: 贪吃蛇按一个方向运行 判短是否撞到自己 是否撞墙 游戏结束 退出 【3】本程序最大优点是简单易行 综合应用数组、指针、结构体、文件等,对该设计题目进
3、行设计和实现。 一、一、 正文正文 1.1. 计算法分析设计算法分析设 1.1 模块调用层次图 主函数 图形驱动 Init 画界面 DrawK 游戏具体过程 GamePlay 图形结束 Close 游戏结束 GameOver 输出成绩 PrScore 【2】系统模块调用层次图 load renew statistics insert change Main load renew statistics Save insert change 1.总体模块流程图: 2. 算法分析 主函数 main(): 定义使用的常数,全局变量及函数原型说明,并调用 Init()函数初始化图 形系统;然后调用 Dr
4、awK()函数画界面,调用 GamePlay()函数实现游戏的具体过 程,游戏结束后调用 Close()函数关闭图形系统结束程序。 画界面函数 DrawK(): 主界面是一个密封的围墙, 用两个循环语句分别在水平方向和垂直方向输出 连续的宽度和高度均为 10 个单位的矩形小方块,设置成淡青色,背景颜色为黑 色。 游戏具体过程函数 GamePlay(): 3. 算法过程: a.设置初始值。为防止食物出现在一个位置上,要设置随机数发生器,真正 产生随机数。初始时,蛇只有蛇头,设定一个开始方向; b.循环执行,直到按 Esc 键退出; c.没有按键的情况下,循环执行。 如果没有食物,随机出现食物;食
5、物的随机出现要确保它的位置在 10 的倍 数位置上,因为蛇的坐标都是以 10 为模的;如果有食物,则显示食物,蛇移动 身体,根据蛇的方向改变坐标值,并判断蛇是否撞到了墙或自己吃到了自己,如 果出现这两种情况之一,则蛇死;调用游戏结束函数 GamePlay(),结束本次游 戏; 判断蛇吃到食物的方法是蛇头的坐标和食物的坐标都相等; 如果蛇吃到了食 物,蛇身体长一节,数组元素增加一个,身体节数、分数都进行相应的改变。 在新位置画出蛇。 采用的方法是每次移动的时候从最后一节开始到倒数第二 节,将前一节的坐标赋值给后一节的坐标,移动后只要把最后一节用背景色去除 即可。 D.如果有按键,则识别按键值。如
6、果按键为 Esc 键则结束游戏,程序运行结 束;如果所按键为方向键,则根据该键改变蛇方向的变量 direction 的值,相反 方向键无效。 游戏结束函数 GameOver(): 游戏结束,清除屏幕,调用输出分数函数 PrScore(),并显示游戏结束。 输出分数函数 PrScore(): 在指定位置利用 sprintf()将整数转换为字符串,用 outtextxy()输出, 、 bar()函数的应用是为了覆盖原来的值。 图形结束函数 Close(): 在显示游戏结束信息的画面时,按任意键关闭图形系统,程序结束。 二、 运运行结果 程序载入 turbo C 编译执行 处理编译过程中的句法错误 程序运行过程调试 根据修改一些指令来修改程序的运行过程 如: 结果图 三、三、 源程序清单源程序清单 #include #include #include #include #include /使用当前时间做种子使用当前时间做种子; enum dirup