贪吃蛇程序设计【荐】.doc
文本预览下载声明
课程设计(论文)任务书
学 院 理学院 专 业 光信息科学与技术 学 生 姓 名 陈亮 学 号 1109020218 课程设计
(论文)题目 小游戏贪吃蛇 设计要求:理解并掌握分析问题、选择算法、绘制流程图、编写源代码、调试并测试程序,直到取得正确结果这样一个完整的过程。其中绘制流程图能使程序员在编程时思路清晰,减少编程错误。利用流程图来分析、查找、解决程序设计中的问进度安排:
一.功能描述 4
二.基本原理 4
三、设计的具体实现 5
(1)函数定义 5
(2)主函数main( ) 6
(3) 画界面函数DrawK( ) 7
(4)游戏具体过程函数GamePlay( ) 7
(5)游戏结束函数GameOver( ) 10
四、调试及解决方法 12
五、测试结果 12
六、设计心得体会 14
七、参考文献 14
八、源代码 15
一.功能描述
基本功能:开始蛇向右方移动。按键盘上定义的上下左右键,蛇改变游动的方向,可以上下左右游动。蛇不能碰到图中的灰色栅栏,如碰到游戏结束。若蛇碰到图中一粒豆子,则豆子被蛇吃掉,图中的豆子消失,蛇身变长。
最终所有的豆子都被吃掉,游戏结束。
增强要求:
必须改进游戏的界面,增加显示相关的统计信息。左边的显示区保持不变,右边动态显示积分和总时间统计信息,其中积分栏目显示当前已经吃下的豆子数目,总时间显示本局游戏从开始到现在经过的时间。
优化主程序,注意CPU和内存的使用效率。
考虑一个合理的得分算法,得分值应该取决于吃下去的豆子和游戏持续的时间。
得分可以在发光二极管上显示出来。
二.基本原理
游戏开始后进入游戏界面.首先初始化蛇的坐标,食物的坐标.线程基本流程:判断是否是暂停阶段,是否有有退出按键,游戏是否有结束,如果都没有就执行, 如果游戏结束了就重新游戏或者退出能通过方向键来控制蛇的移动方向; 蛇吃到食物后能够更新和显示分数; 个食物后,游戏能够,并能通过增加蛇的移动速度来增加游戏的难度#define N 200
#define M 200
#includegra
phics.h
#includestdlib.h
#includestdio.h
#includestring.h
#includeiostream.h
#includedos.h
#includeconio.h
#include windows.h
#define LEFT 97//A
#define RIGHT 100//D
#define DOWN 115//S
#define UP 119//W
#define Esc 0x011b
int i,key;
int score=0;
int gamespeed=250;//游戏速度可根据实际情况自行调整
struct Food
{
int x;//食物的横坐标
int y;//食物的纵坐标
int yes;//判断是否要出现食物的变量
}food;//食物的结构体
struct Snake
{
int x[M];
int y[M];
int node;//蛇的节数
int direction;//蛇的移动方向
int life;//蛇的生命,0表示活着,1表示死亡
}snake;
void Init();//图形驱动
void Close();//图形结束
void DrawK();//开始画面
void GamePlay();//玩游戏的具体过程
void GameOver();//游戏结束
void PrScore();//输出成绩
(2)主函数main( ) 主函数是程序的主流程,首先定义使用到的常数、全局变量及函数原型说明,然后初始化图形系统,调用函数DrawK()画出开始画面,调用函数GamePlay(),即玩游戏的具体过程,游戏结束后调用Close()关闭图形系统,结束程序{
Init();//图形驱动
DrawK();//开始画面
GamePlay();//玩游戏的具体过程
Close();//图形结束
}
void Init()//图形驱动
{
int gd=DETECT,gm;
initgraph(gd,gm, );/*此处为turboc的路径,读者可以根据自己的电脑而改*/
cleardevice();
}
(3) 画界面函数DrawK( )
主界面是一个封闭的围墙,用两个循环语句分别在水平和垂直方向输出连续的宽度和高度均的矩形方块,表示围墙,为了醒目,设置为色。{
setbkcolor(GREEN);
setcolor(LIGHTRED);
setlinestyle(0,0,5);//设置线型
for(i=50;i=600;i+=10)//画围墙
{
rectangle(i,40,i+10
显示全部