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

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

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

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

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

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

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