预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

C语言课程设计报告 贪 吃 蛇 专业 学生姓名 班级 学号 完成日期 一、游戏规则需求 1、在打开程序后,出现选择界面,里面包含难度选择,其中难度选择能够使程序出现相应的游戏难度; 2、开始游戏后,WASD键控制贪吃蛇的移动方向; 3、当贪吃蛇向一个方向移动时,不能立刻向反方向移动; 4、贪吃蛇撞到的自己的身体或者撞到墙时,游戏结束,并输出“GAMEOVER”; 5、贪吃蛇吃到一个食物后,出现白色闪烁一次,身体随之增加一个单位长度; 二、所需数据结构分析 1、所需函数模块 voidbegin;//登陆界面 voidstart;//鼠标移动事件 voidinit;//初始化游戏 voidsetfoodcrd;//设置食物要出现的坐标 voidshowfood;//在相应的坐标画出食物 voidsnakemove;//移动蛇,实际就是改变蛇各节的坐标 voidjudgeslod;//判断蛇是否撞墙或者撞到自己 voidjudgesef;//判断蛇是否吃到食物了 voidshowsnake;//在屏幕上画出蛇 voidchangeskdir;//接受用户输入,改变蛇的前进方向 voidgameover;//游戏结束 2、蛇及食物数据结构 typedefstruct//定义一个结构体表示坐标 { intx; inty; }COOR; structFOOD//定义结构体,来存储食物的相关信息 {COORcrd;//食物出现的坐标 intflag;//食物的状态,1表示食物还没被吃,0表示食物被吃了 }food; structSNAKE//定义结构体,来存储蛇的相关信息 { COORcrdSIZEMAX;//保存蛇的每个结数的坐标,最多有100节 intnode;//保存蛇当前节数 DIRdir;//当前蛇行进的方向 }snake; 3、游戏流程图 开始 图形界面初始化 进入游戏难度选择界面 进入游戏界面 从键盘读入操作信息 各类消息判断并作相应的处理 蛇是否存活 关闭游戏,结束 三、所需核心算法分析 1.主函数 voidmain//主函数 { initgraph640,640; 导入图片 begin;//登陆界面 init;//初始化游戏 while1 { whilekbhit { iffood.flag { setfoodcrd; } showfood; judgeslod; judgesef; snakemove; Sleepspeed; } changeskdir; } } 2.图形初始化 voidinit//初始化游戏 { putimage0,0,&img7; setbkcolorRGB124,107,7; food.flag=0; snake.crd0.x=80+SNAKELEN; snake.crd0.y=155; snake.crd1.x=80; snake.crd1.y=155; snake.node=2; snake.dir=right; } 3.读入操作信息的处理 voidsnakemove { inti; fori=snake.node;i>0;i-- { snake.crdi.x=snake.crdi-1.x; snake.crdi.y=snake.crdi-1.y; } switchsnake.dir { caseup: snake.crd0.y-=SNAKELEN; break; casedown: snake.crd0.y+=SNAKELEN; break; caseleft: snake.crd0.x-=SNAKELEN; break; caseright: snake.crd0.x+=SNAKELEN; }showsnake; } 四、关键函数介绍 1.贪吃蛇链表 用链表的节点表示蛇,移动的时候增加一个头节点隐藏一个尾节点,吃食物只需增加一个头节点; 2.Putimage函数 用数组读入图片信息,loadimage函数载入图片,然后用putimage函数显示图片,实现图形界面; 3.GetMouseMsg函数 鼠标经过响应,改变按钮的状态,美化图形界面; 4.mkLButton函数 实现鼠标点击响应,使游戏从登陆界面跳转到游戏界面; 5.rectangle函数 功能:画出蛇身和食物 6.outtextxy 功能:在指定位置显示一字符串 用法:voidfarouttextxyintx,inty,chartextstring; 五、测试与调试 1.最初的时