贪吃蛇游戏 C语言程序设计

标签:
贪吃蛇课程设计报告c语言游戏it |
分类: C_and_CPP |
《计算机程序设计》课程设计报告
课 题 名 称
班
姓
目录
1 需求分析
【阐述课程设计应该完成的功能】
使用键盘的上下左右,来控制蛇的运动方向,ESC键退出,并显示得分。
2 系统分析和设计
2.1 数据结构的设计和选择的理由
本游戏中涉及的主要数据结构是如何表示运动的蛇、食物状态等问题。
2.1.1
struct Point {
}
struct Point nodes[MAX_LENGTH];
贪吃蛇是在不断的运动的,我们研究蛇的运动可以发现这样的特点:
1. 蛇头由键盘控制,键盘不操作时,保持原有方向运动;(用
intdirection;表示)
2.
运动时,蛇身后面一节移动到前面一节的位置。当我们用nodes[0]表示蛇头的时候,nodes[1]运动到nodes[0]处;nodes[2]运动到nodes[1]处...。
3. 吃到一个食物以后,蛇身会增加一节。即该数组中的有效数据个数加一。(用int length;表示)
根据上面的情况,我们可以设计蛇的数据结构如下:
struct Snake {
}
2.1.2
1. 坐标位置
2. 状态:存在,或被吃。
故我们用以下结构表示:
struct Food {
}
2.2 系统模块划分和模块结构
void main() {
}
2.3 流程图
2.4 数据类型、全局变量和函数说明
2.4.1数据类型
struct Point
{
};
struct Snake
{
} snake;
struct Food
{
} food;
2.4.2全局变量
Score
left,top,right,bottom
lastx,lasty
keyCode
2.4.3函数说明
void
init(void);
void
gamePlay(void);
void
close(void);
void
drawWall(void);
void
createFood(void);
void
drawFood(void);
void
drawSnake(void);
void
drawScore(void);
int
touchWall(void);
int
touchSelf(void);
void
gameOver(void);
void
moveSnake(void);
int oppositeDirection(int
keyCode);
int
foodEat(void);
void
expandSnake(void);
3 程序测试和运行结果
----------------------------------------------------------------------------选择速度开始或退出
http://hi.csdn.net/attachment/201107/31/0_13121104968CsR.gifC语言程序设计" />
----------------------------------------------------------------------------------------游戏运行中
http://hi.csdn.net/attachment/201107/31/0_1312110527CcdK.gifC语言程序设计" />
--------------------------------------------------------------------------------------------------------游戏结束
4 课程报告小结
【遇到的问题及解决方法分析等】
4.1分数重叠显示
解决方法:每次都用一块黑的矩形覆盖
setfillstyle(1,16);
4.2速度太快
解决方法:循环delay
for(d=0;d<4;d++)
4.3食物可能出现在蛇身上
解决方法:依次判断,若重叠则重新生成食物
void createFood() {
label:
附录A:程序源代码
这是资源地址,源代码http://download.csdn.net/source/3483954
设计报告http://download.csdn.net/source/3483963