欢迎来到天天文库
浏览记录
ID:51437458
大小:147.00 KB
页数:11页
时间:2020-03-24
《数据结构课程设计报告模板.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、[贪吃蛇程序设计]一、设计课题贪吃蛇程序设计二、设计内容1.工作说明(1)实现贪吃蛇小游戏的运行,各功能模块分别为食物类型的定义,蛇类型的定义,界面光标位置的显示,蛇的初始化,计分方向控制的显示,边界及界面的显示,食物的输出,控制蛇的死亡,游戏的实现过程等等。以字符形式输入数据,控制程序的运行,通过ASCII码的转换输出边界、食物、蛇形等界面,并通过字符形式输出分数,操作控制方式,等具体界面显示内容。否进入游戏(2)主函数流程图游戏初始界面否蛇的初始化随机输出食物蛇移动是否蛇吃食物随机生成食物蛇增长是否是是继续否结束蛇死亡11(3)所用到的数据结构
2、的知识及相关数据结构的描述形式数据类型的表示及实现,算法和算法分析,线性表的链式表示和实现,数组的顺序表示,动态存储管理等。(4)函数介绍a界面光标位置函数:控制界面光标位置,为显示边界、食物等界面显示内容提供依据。b.方向控制函数:通过键盘输入指定字母实现对蛇移动方向的控制。c.初始化蛇函数:通过链表方式显示蛇的形象,并控制蛇的初始长度、初始移动方向及初始分数。d.边界及界面显示函数:通过引用界面光标位置函数,实现在指定位置输出上下左右边界,显示操作方法。e.计分显示函数:通过引用界面光标位置函数,实现在指定界面位置输出分数。f.控制蛇的死亡函数
3、:讨论当蛇碰到左右上下边界以及咬到自身等几种情况时,通过引用库函数清除当前屏幕,再通过界面光标位置函数在指定位置输出"GameOver!"、"PressESCtoexit,anyotherkeytoretry!",接着通过选择是否继续游戏,如果是,通过引用库函数中的跳跃函数,回到指定位置循环程序;如果否,则结束游戏。g.食物输出函数:通过引用库函数中的随机数函数随机输出食物,并当蛇吃到食物时,控制蛇长度增长,同时使用递归函数循环输出食物。h.游戏实现过程函数:调用以上函数,实现蛇的移动、增长、死亡的具体游戏实现过程。(5)函数的调用关系(1)调用了
4、gotoxy()函数的有:boundary()函数,getscoresys()函数,isdead()函数,play()函数。(2)play()函数调用的函数有:gotoxy()函数,boundary()函数,getscoresys()函数,isdead()函数。(3)主函数main()调用了play()函数。3、任务实现(1)在程序中,首先调用蛇的初始化函数initialization()得到蛇,再通过食物输出函数getfood()随机输出一个食物,然后经过使用一个do-while循环。在这个循环中先调用边界及界面显示函数和界面光标位置函数控制边界
5、及食物的显示,然后判断食物是否被吃掉,如果是,那么继续输出食物;如果否,那么通过调用库函数_kbhit()11输入使蛇移动的指令w、a、s、d,以及当输入空格键时暂停程序,当输入ESC键时退出程序。接着通过判断蛇每吃到一次食物使蛇长度增加1,然后继续通过一个switch()循环不断控制蛇的移动方向,接着调用控制蛇死亡的函数isdead(),然后判断当蛇每吃到一个食物分数加10,长度加1,食物消失,然后调用分数统计函数在界面指定位置输出,最后调用库函数控制蛇的移动速度,完成整个屏幕和缓冲区的清除。经过该do-while循环达到该程序中蛇的移动,蛇吃食
6、物增长,分数增长等主要主要部分功能的实现。(2)时间复杂度T(n)=O(n^2)(3)源代码#include"stdio.h"#include"windows.h"#include"time.h"#include"setjmp.h"#include"conio.h"#defineMAXNOD500#defineUP1#defineDOWN-1#defineLEFT-2#defineRIGHT2#defineYES1#defineNO0jmp_bufretry;//定义retry为跳跃状态变量typedefstruct//定义食物类型{intx;in
7、ty;intstatus;}Food;typedefstruct//定义蛇类型{int*px;int*py;intdirection;intnodlen;intscore;}Snack;11intgotoxy(intx,inty)//界面光标位置{COORDcd;cd.X=x-12;cd.Y=y;returnSetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),cd);}voidinitialization(Snack*pss)//初始化蛇{system("color0a");pss->p
8、x=(int*)malloc(MAXNOD*sizeof(int));pss->py=(int*)malloc(MAXNO
此文档下载收益归作者所有