《课程设计报告模板_6.docx》由会员分享,可在线阅读,更多相关《课程设计报告模板_6.docx(15页珍藏版)》请在第一文库网上搜索。
1、课程设计课程名称:程序设计课题名称:多功能计算器的设计班级:计算机学院12-IBJ班完成人:洪光树(14洪4503796)指导教师:李宛珊湖南理工学院计算机学院2013年12月23日一、设计目的贪吃蛇游戏二、系统的功能分析必须包括:系统的功能需求,可以画出功能模块图实现贪吃蛇游戏,通过WaSd控制方向,吃一个食物蛇身长一截,撞到围墙或咬到自己则死亡。三、系统的程序设计与实现必须包括:系统的运行环境MicrosoftVisua1C+开发环境(用什么语言或集成开发环境)C语言系统的详细设计(包括模块之间的关系,模块的功能、主要功能实现的程序段说明等)定义蛇的长度,食物,速度,方向,构建围墙,游戏的
2、种种情况分析四、系统的运行结果与分析必须包括:系统的运行结果的屏幕截图及说明eCAProqramFi1es(86)MicrosoftVisua1StudioDebuqtest.exe005可.说IWsad:*eMMj请按任意谑怅续.开始时蛇的长度为一,之后吃一个食物加10分,长度加1,撞到边缘(墙壁)游戏结束。附录:系统的源程序#inc1ude#inc1ude#inc1udeinc1ude#inc1ude#inc1udeintSnakeen=1;/开始时蛇的长度intsnakeJoc5021=31,12;/整条蛇的位置,最长为50iniSnake_head2=31,12;蛇头位置,初始值为【1
3、,12;intfood2H食物位置charSnakJdireC1ion=s;intdeIay=200;蛇的速度intea1_f1ag=O;1表示吃了食物,O表示未吃intIiv_sta1=O;/1表示死了,游戏该结束了;O表示还活着voidgotoxy(intx,inty)定位光标。(COORDpos=x,y;HAND1Ehut=GeIS1dHand1e(STD_OUTPUTJHAND1E);SetConsoieCursorPosition(hOut,pos);)voidhidden。隐藏光标(HAND1Ehu1=GetStdHand1e(STD_OUTPUT_HAND1E);CONSO1E_
4、CURSOR_INFOcci;GetConso1eCursorInfo(hOut,&cci);cci.bVisib1e=O;1为显示,O为隐藏SetConso1eCursorInfo(hOut,(fecci);1voidinit()/初始化(inti;Snakeen=1;/蛇的长度snakejoc001=31;整条蛇的位置snakejoc01=12;Snakej1ead0=31;蛇头位置,初始值为11,12;snake-head1=12;Snakedirection=*;de1ay=200;eat_f1ag=O;1iv_stat=O;for(i=1;i50;i+)(SnakeJoC现0=0;整
5、条蛇的位置snakejoci1=0;voidCreaIe_window()创建窗口gotoxy(0,0);printf(*H);printf(*H);printf(*分数:O*);printf(*按键说明:*”);printf(*:w”);下:Sprintf(n*);printf(*,);printf(*右:d*);printf(*暂停:空格*);printf(*退出:ESC键*);printf(*);printf(*);printf(*);printf(*);printf(*);printf(*);printf(*);printf(*);printf(*);printf(*);printf(
6、*printf(*,);voidUpdate_score()更新分数(gotoxy(73,3);printf(%2d,snakeJen*10-10);)voidCrea1e_food()产生食物的位置(t;srand(time(&t);whi1e(1)(food0=rand()%62+1;生成162之间的随机数,其中random函数生成077之间的随机数food1=rand()%22+1;/生成122之间的随机数,其中random函数生成017之间的随机数if(food0!=snake-head01fcfcfd1!=snake_head1)break;)go1oxy(food0,food11)
7、;prin1f(*);1voiddirection()charkeyhi1=0,i;whi1e(kbhi1()!=O)keyhit=getch();if(keyhit=a,)(keyhit=d,)(keyhi1=,w)(keyhit=,s)&(abs(snake-direc1ion/16-keyhit/16)=1)snake_direction=keyhit;e1seif(keyhit=,)(gotoxy(30,24);SySIem(pause);gotoxy(30,24);for(i=0;i19;i+)printf();)e1seif(keyhit=27)exit(0);1voidState
8、()/判定蛇死没死(if(snake_head|O62|snake_head122)1iv-stat=1;1voideat()判定蛇吃没吃上,并对根据方向对蛇头位置进行更新(switch(snake_direction)(case,w:snake_head1;break;case,s,:snake_head1+;break;case,a,:snake_headO|;break;cased:snake_headO+;break;)if(food01=snake_head0|)&(food1=snake_headI)eat-f1ag=1;switch(snake_direction)case,w,
9、:snake_head1;break;case,s,:snake_head1+;break;case,a:snake_headO;break;cased:snake_headO+;break;)voidShoW_snake()更新蛇在屏幕中的位置(gotoxy(snake_head|O,snake-head(11);printf(*);gotoxy(snake_1ocsnake_1en-110,snake_1ocsnake_1en-11(1);printf(,);)voidUpdate_maxtrix。/更新存储蛇位置的数组(inti;if(eat_f1ag!=1)(for(i=snakeje
10、n-1;iO;i-)(snakejoci01=snakejoci-110;snake_1oci1(11=snake_1oci-111;e1sesnake_1en+;if(snakejen3&de1ay1(X)de1ay-=30;fbr(i=snakeen-1;i1;i-)(snake_1oci10=snake_1oci-20;snake_1oci11=snake_1oci-21;)snakeJoc01=food0;snakeJoc111=food1;ea1_f1ag=O;create-food();update_score();)snake_1oc00=snake_head0;snakejoc
11、01=snake_head1;)voidmain()(1OOP:system(,c1s);init();create_window();hidden();create_food();whi1e(1)inti;S1eep(de1ay);direction();eat();show_snake();update_maxtrix();s1ate();if(1iv_stat=1)(for(i=1;isnake_1en;i+)(go1oxy(snakejoci0,snakejoci1);printf();)gotoxy(food0,food11);printf(1);go1oxy(30,12);prin
12、tf(Gameover!n);go1oxy(25,13);PrinIf(开始请按y,退出请按n);whi1e(1)(i=getch();if(i=y)goto1OOP;e1seif(i=,n)break;break;在完成这项课程设计的过程中,我回顾了以前学过的很多知识,同时也查阅了很多相关资料,让我意识到自己的很多不足。刚开始,我还是一脸茫然,是班上该方面成绩优异的同学帮助指导了我,同时我也很受鼓舞,埋头苦干,弄清了程序的思路和功能联系,为此我十分欣慰。我很感谢这次学习机会,这不仅仅是一个学习任务,将是我学习新的起点。我立志要编出一个能证明自己的程序,打入将来的自评意见IT行业。签名:洪光树2013年12月23日指教评等导师定级签名: