资源描述:
《课程设计--- 贪吃蛇小游戏程序设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、信息技术学院本科课程设计报告课程设计题目学生姓名:李雪学院:信息技术学院专业:信息管理与信息系统班级:B1102学号:0911110201指导教师:王浩涌完成日期:辽东学院EasternLiaoningUniversity一、题目(问题)描述贪吃蛇小游戏程序设计图1贪吃蛇系统界面二、功能分析贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。一、系统设计1.程序总体结构图2
2、贪吃蛇程序系统的构图2.界面设计如图,通过W、S、A、D、space键进行操作3.输入方式设计A用W、S、A、D、键控制蛇的上下左右移动,space键停止,esc键结束。B游戏目标:操纵屏幕上那条可爱的小蛇,在方框中不停吃豆豆,而每吃一个豆豆,蛇的身体都变的更长一些,即增加一颗星星。游戏的难度也会随之加大。C游戏终止:终止条件1——蛇头撞到墙上;终止条件2——蛇身形成一个圈,也就是蛇头碰到自身的任何一处4.重要数据的数据结构设计5.函数设计6.函数调用图7.实体属性图一、关键技术、难点及其解决方法二、测试方法三、总结附录1程序源代码#include#incl
3、ude#include#include#include#include#defineN21intapple[3];charscore[3];chartail[3];voidgotoxy(intx,inty)//输出坐标{COORDpos;pos.X=x;pos.Y=y;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}voidcolor(intb)//颜色函数{HANDLEhConsole=GetStdHandle
4、((STD_OUTPUT_HANDLE));SetConsoleTextAttribute(hConsole,b);}intBlock(charhead[2])//判断出界{if((head[0]<1)
5、
6、(head[0]>N)
7、
8、(head[1]<1)
9、
10、(head[1]>N))return1;return0;}intEat(charsnake[2])//吃了苹果{if((snake[0]==apple[0])&&(snake[1]==apple[1])){apple[0]=apple[1]=apple[2]=0;gotoxy(N+44,10);color(13);printf
11、("%d",score[0]*10);color(11);return1;}return0;}voidDraw(char**snake,intlen)//蛇移动{if(apple[2]){gotoxy(apple[1]*2,apple[0]);color(12);printf("●");color(11);}gotoxy(tail[1]*2,tail[0]);if(tail[2]){color(14);printf("★");color(11);}elseprintf("■");gotoxy(snake[0][1]*2,snake[0][0]);color(14);printf(
12、"★");color(11);putchar('');}char**Move(char**snake,chardirx,int*len)//控制方向{inti,full=Eat(snake[0]);memcpy(tail,snake[(*len)-1],2);for(i=(*len)-1;i>0;--i)memcpy(snake[i],snake[i-1],2);switch(dirx){case'w':case'W':--snake[0][0];break;case's':case'S':++snake[0][0];break;case'a':case'A':--snake
13、[0][1];break;case'd':case'D':++snake[0][1];break;default:;}if(full){snake=(char**)realloc(snake,sizeof(char*)*((*len)+1));snake[(*len)]=(char*)malloc(sizeof(char)*2);memcpy(snake[(*len)],tail,2);++(*len);++score[0];if(score[3]<16)++score[3];t