《C语言课程设计报告(贪吃蛇)(共10页).doc》由会员分享,可在线阅读,更多相关《C语言课程设计报告(贪吃蛇)(共10页).doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上 C语言课程设计报告(项目:贪吃蛇) 学号:姓名: 课程设计题目:贪吃蛇游戏专业班级:核工程与核技术4班报告人姓名: 学号: 同组组长: 同组其他成员: 课程教师: 实验地点:95101实验室完成起止日期:2011年3月7日至2011年3 月15日一、课程设计概述(目的、任务、开发环境、参考资料)课程目的:1.熟悉二维数组的应用2.图形库文件中图形函数的使用3.通过游戏程序增加编程兴趣,提高编程水平课程任务:1.数组元素为结构体的数组应用2.全局变量应用3.按键处理 4.数组元素与蛇食物对应关系 5.图形方式开发环境:turbo C参考资料:C语言课程设计案例精编郭翠
2、英 等编著 中国水利水电出版社二、项目的可行性研究 项目流程图三、项目设计的基本原理和采用的主要方法与技术1.项目流程图2.graphics.h库函数中的 矩形函数rectangle()等图形函数的应用3.二维数组的应用4.按键控制5.全局变量四、本人实现项目的过程与步骤 1.画出项目流程图(如上图)2.写出主函数的整个运行过程3.整理函数运行过程中所需要的函数及定义如:(1).矩形图形函数rectangle() (2).定义蛇和实物的二维数组结构体struct Snake int xN; int yN; int node; int direction; int life;snake; (3)
3、.按键定义#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011b4.定义各函数,分配功能void Init(void);图形驱动void Close(void);图形结束void DrawK(void);开始画面void GameOver(void);游戏结束void GamePlay(void);游戏过程void PrScore(void);输出成绩 5.各函数的编辑 开始画面函数(画围墙) 游戏过程函数(蛇移动的算法 蛇吃食物的算法 按键算法等) 游戏结束及成
4、绩输出函数 6.定义与各函数的整合嵌入7.编译调试 8.对程序的扩展功能的调整9.完成实验报告五、个人遇到的困难与获得的主要成果(一)遇到的主要主要困难1.程序结构的理解 由于长时间对C语言与数据结构没有接触,使我们对这些有一些相对陌生,主要是二维数组的引用以及循环的控制方面,如: (1) for(i=snake.node-1;i0;i-)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/ snake.xi=snake.xi-1; snake.yi=snake.yi-1; (2)for(i=3;isnake.node;i+)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能
5、拐过来*/ if(snake.xi=snake.x0&snake.yi=snake.y0) GameOver();/*显示失败*/ snake.life=1; break; 2.graphics.h图形库函数的陌生 第一次接触graphics.h库函数,对其一无所知通过查阅资料找到graphics.h库函数中几个关键函数的功能及用法。 如:setcolor(int color);定义线型等颜色rectangle(int left, int top, int right, int bottom);画矩形 等。 3.图形函数中的坐标在屏幕中的位置图形库函数是以坐标来实现的,它与通用坐标不同,以屏幕
6、左上角为原点以像素为单位长度的,如图。(x+I,y) (x,y) (x,y+i)4.按键的处理 按键的处理也是第一次接触,对其不是很了解后来通过程序找到其中关键 第一步,按键定义 #define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011b第二步,方向定义/*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/switch(snake.direction) case 1:snake.x0+=10;break; case 2: snake.x0-=10;b
7、reak; case 3: snake.y0-=10;break; case 4: snake.y0+=10;break; 第三步,按键与控制方向联系else if(key=UP&snake.direction!=4)/*判断是否往相反的方向移动*/ snake.direction=3; else if(key=RIGHT&snake.direction!=2) snake.direction=1; else if(key=LEFT&snake.direction!=1)snake.direction=2; elseif(key=DOWN&snake.direction!=3) snake.d
8、irection=4; (二)获得主要成果 1.对上述难的解决(解决过程上面已给出) 2.对此程序的熟悉,进而进行一些改进 如,可以根据rectangle函数改变蛇和实物的大小;可以去掉围墙以屏幕循环模式,来降低游戏难度等3.对面上结构程序设计方法的进一步理解,可以通过发散思维,进而理解编写其他程序六、测试与运行记录1.程序载入turbo C2.编译执行3.处理编译过程中的句法错误(略)4.程序运行过程调试5.根据修改一些指令来修改程序的运行过程如:等。6.程序完成七、课程设计完成结果分析与个人小结 1.结果分析 程序最终运行成功,程序共一个for循环的关键语句控制蛇的移动关键算法,if语句实现了蛇吃实物生长的算法,以switch和几个if语句共同完成了按键控制算法。几个算法在程序实现起到了关键作用,后面通过图形库函数对围墙 蛇 食物的形状做了制作,在加上几个成绩输出图形显示等函数通过最终的整合嵌入共同完成了这个结构化的程序设计。 2.个人总结通过此程序,我做成了一个完整的小产品。使我们熟悉了面向程序设计的方法步骤。这次程序设计,我们遇到了一个全新的库函数,我们通过自己查看库函数源文件,了解了程序的用法并进行了应用。以此我们可以通过发散思维对以后其他的程序所设计到的新的库文件也找到了入手点进而可以编写新的程序。八、附录(源程序)专心-专注-专业