C语言课程设计.docx
《程序设计》课程设计报告
题 目:《C语言课程设计——小游戏贪吃蛇》
班 级:2011级计本班
设计者:时 间:
得 分:
1
目录
设计目的与内容
流程图
程序源代码
心得,体会
2
一·设计目的与内容
目的:(1)基本掌握面向过程程序设计的基本思路与方法;
(2)达到熟练掌握c语言的基本知识和技能;
(3)能够利用所学的基本知识和技能,解决简单的程序;设计内容:
在了解已知的贪吃蛇游戏代码的基础上,让其难度增加,增加玩游戏的趣味性,增加通关的难度。
3
二.流程图
开始,初始化,将蛇蛇的尾.身.头依次放人队列
按键判断:改变运动方向、退出
按键判断:改变运动方向、
退出...暂停 。是否ECS退出?
潘戏结柬
计算出蛇蛇的下一步位置坐标
(根据运动方向)
下一坐标是否撞刊身体或陓琨物
另“下一步位置.坐标为新的蛇头坐标,并且将其坐标值入队列
(蛇头在队尾),绘刮新的蛇头
是
HP--
HP--
蛇是否吃封食物(新坐标位萱==享物坐标位室则为是)
隍机位寰产生
一个新的食物
否
是将蛇蛇的尾巴出队,在相应位笠渚空蛇蛇的尾巴
是
否队列的长度即为蛇蛇的长度,判断长忮是否达刮赢得潘戏的标准
否
谛戏结束
游戏结束
4
三,源代码
#includestdlib.h#includegraphics.h#includebios.h#includedos.h#includeconio.h#defineEnter7181
#defineESC283
#defineUP18432
#defineDOWN20480
#defineLEFT19200
#defineRIGHT19712#ifdef cplusplus#define CPPARGS...#else
#define CPPARGS#endif
voidinterrupt(*oldhandler)( CPPARGS);
voidinterruptnewhandler( CPPARGS);
voidSetTimer(voidinterrupt(*IntProc)( CPPARGS));voidKillTimer(void);
voidInitgra(void);
voidTheFirstBlock(void);voidDrawMap(void);
voidInitsnake(void);voidInitfood(void);voidSnake_Headmv(void);
voidFlag(int,int,int,int);
voidGameOver(void);voidSnake_Bodymv(void);
voidSnake_Bodyadd(void);voidPrntScore(void);voidTimer(void);
voidWin(void);
voidTheSecondBlock(void);voidFood(void);
voidDsnkorfd(int,int,int);voidDelay(int);
structSnake
{intx;inty;intcolor;}Snk[12];structFood
{intx;inty;intcolor;}Fd;
intflag1=1,flag2=0,flag3=0,flag4=0,flag5=0,flag6=0,
5
checkx,checky,num,key=0,Times,Score,Hscore,Snkspeed,TimerCounter,TureorFalse;charSco[2],Time[6];
voidmain()
{Initgra();SetTimer(newhandler);TheFirstBlock();while(1)
{DrawMap();Snake_Headmv();GameOver();Snake_Bodymv();Snake_Bodyadd();PrntScore();Timer();
Win();if(key==ESC)break;if(key==Enter)
{cleardevice();
TheFirstBlock();
}
TheSecondBlock();Food();Delay(Snkspeed);
}
closegraph();KillTimer();
}
voidinterruptnewhandler( CPPARGS)
{
TimerCounter++;oldhandler();
}
voidSetTimer(voidinterrupt(*IntPro