程序设计实训报告 贪吃蛇游戏Word文档格式.docx
《程序设计实训报告 贪吃蛇游戏Word文档格式.docx》由会员分享,可在线阅读,更多相关《程序设计实训报告 贪吃蛇游戏Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
5.要求系统运行稳定、可靠。
2)实施方案
2.课程设计的具体工作内容:
1)模块N-S流程图(选择关卡模块及速度控制模块)
2)模块源代码
voidInit();
voidClose();
voidDrawK();
voidGameOver();
voidGamePlay();
voidPrScore();
voidSelectLevel();
voidSelectColor();
voidmain()
{
SelectLevel();
SelectColor();
Init();
DrawK();
GamePlay();
Close();
}
voidSelectLevel()
for(i=0;
i<
10;
i++)
printf("
"
);
50;
*"
\n"
48;
Pleaseselectthelevel!
*\n"
1:
Easy2:
Normal3:
Hard*\n"
Pleaseselcet:
"
scanf("
%d"
&
lev);
switch(lev)
{
case1:
gamespeed=50000;
break;
case2:
gamespeed=100000;
case3:
gamespeed=150000;
default:
break;
}
3)模块运行结果
3.课程设计心得(要求300字以上,程序源代码以附录形式附在报告最后)
通过此次实训,我对C++语言有了更深刻的理解和体会,同时发现了许多自己的不足之处。
首先,对于C++的基础知识掌握还不够牢固,对C++中经常出现的错误也不是很了解;
其次,对于函数之间的调用使用不够熟悉,这些不足,通过实训都得到了锻炼和提高。
我们通过实训不仅巩固了以前所学过的知识,而且还通过查找资料等方法学到了很多在书本上没有学过的知识。
其次,我充分认识到了理论与实践结合的重要性。
仅仅具有理论知识是不够的,只有把理论与实践结合起来,制作出完美的作品,才能更好的适应社会对我们的要求。
最重要的一点是,我们都认识到了团队合作的重要性。
通过小组成员之间的分工,每个成员负责整个程序一部分,组长负责最后的调试和运行,我们成功制作出了贪吃蛇游戏,团队合作意识,成员之间的沟通能力都得到了很大的提高。
总之,通过程序实训,我们的综合能力得到了很大的提高,对我们专业的学习提供了很大的帮助。
附录:
系统源代码
#defineN200
#include"
graphics.h"
stdio.h"
stdlib.h"
dos.h"
#defineLEFT0x4b00
#defineRIGHT0x4d00
#defineDOWN0x5000
#defineUP0x4800
#defineEsc0x011b
inti,key,cor,lev;
intscore=0;
intgamespeed;
structFood
intx,y;
intyes;
}food;
structSnake
intx[N],y[N];
intnode,direction,life;
}snake;
voidSelectColor()
Pleaseselectthecolor!
Black2:
Green3:
Gray*\n"
i++)
scanf("
cor);
switch(cor)
cor=0;
cor=10;
cor=8;
voidInit()
intgd=DETECT,gm;
initgraph(&
gd,&
gm,"
c\\tc"
cleardevice();
voidDrawK()
setbkcolor(cor);
setcolor(11);
setlinestyle(SOLID_LINE,0,THICK_WIDTH);
for(i=50;
i<
=600;
i+=10)
rectangle(i,40,i+10,49);
rectangle(i,451,i+10,460);
for(i=40;
=450;
rectangle(50,i,59,i+10);
rectangle(601,i,610,i+10);
voidGamePlay()
randomize();
food.yes=1;
snake.life=0;
snake.direction=1;
snake.x[0]=100;
snake.y[0]=100;
snake.x[1]=110;
snake.y[1]=100;
snake.node=2;
PrScore();
while
(1)
while(!
kbhit())
if(food.yes==1)
food.x=rand()%400+60;
food.y=rand()%350+60;
while(food.x%10!
=0)
food.x++;
while(food.y%10!
food.y++;
food.yes=0;
if(food.yes==0)
setcolor(GREEN);
rectangle(food.x,food.y,food.x+10,food.y-10);
for(i=snake.node-1;
i>
0;
i--)
snake.x[i]=snake.x[i-1];
snake.y[i]=snake.y[i-1];
switch(snake.direction)
case1:
snake.x[0]+=10;
case2:
snake.x[0]-=10;
case3:
snake.y[0]-=10;
case4:
snake.y[0]+=10;
for(i=3;
snake.node;
i++)
if(snake.x[i]==snake.x[0]&
&
snake.y[i]==snake.y[0])
GameOver();
snake.life=1;
if(snake.x[0]<
55||snake.x[0]>
595||snake.y[0]<
55||snake.y[0]>
455)
if(snake.life==1)break;
if(snake.x[0]==food.x&
snake.y[0]==food.y)
setcolor(0);
snake.x[snake.node]=-20;
snake.y[snake.node]=-20;
snake.node++;
score+=10;
setcolor(4);
for(i=0;
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);
delay(gamespeed);
rectangle(snake.x[snake.node-1],snake.y[snake.node-1],
snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);
if(snake.life==1)break;
key=bioskey(0);
if(key==Esc)break;
elseif(key==UP&
snake.direction!
=4)
snake.direction=3;
elseif(key==RIGHT&
=2)
elseif(key==LEFT&
=1)
snake.direction=2;
elseif(key==DOWN&
=3)
snake.direction=4;
voidGameOver()
setcolor(RED);
settextstyle(0,0,4);
outtextxy(200,200,"
GAMEOVER"
);
getch();
voidPrScore()
charstr[10];
setfillstyle(SOLID_FILL,YELLOW);
bar(50,15,220,35);
setcolor(6);
settextstyle(0,0,2);
sprintf(str,"
score:
score);
outtextxy(55,20,str);
voidClose()
closegraph();