《计算机程序设计》课程设计贪吃蛇实验报告

本文由用户“ricow”分享发布 更新时间:2021-06-20 03:03:00 举报文档

以下为《《计算机程序设计》课程设计贪吃蛇实验报告》的无排版文字预览,完整格式请下载

下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。



《计算机程序设计》课程设计报告

课 题 名 称 贪吃蛇游戏

班 级 软件1班

学 号 ***4

姓 名 罗某某

指 导 教 师 宋某某

设 计 时 间 11/1/1 至 11/1/3

设 计 地 点 XX***

XX***计算机科学与***

目录

1 需求分析 1

2 系统分析和设计 1

2.1 数据结构的设计和选择的理由 1

2.2 系统模块划分和模块结构 2

2.3 流程图 3

2.4 数据类型、全局变量和函数说明 3

3 程序测试和运行结果 4

4 课程报告小结 5

4.1分数重叠显示 5

4.2速度太快 5

4.3食物可能出现在蛇身上 5

附录A:程序源代码 6

1 需求分析

【阐述课程设计应该完成的功能】

使用键盘的上下左右,来控制蛇的运动方向,ESC键退出,并显示得分。

2 系统分析和设计

2.1 数据结构的设计和选择的理由

本游戏中涉及的主要数据结构是如何表示运动的蛇、食物状态等问题。 2.1.1 从游戏参考画面中我们可以看到,贪吃蛇的身体是一节节的,由一个个大小相同的方块组成,那么我们可以用一个(x,y)坐标为左上角的、固定宽度的正方形来表示一节蛇身。为表示连续的多节身体,那么我们可以采用数组(或链表,或线性表)等数据结构来表示。下面以数组方式为例: struct Point { ??? int x, y; } struct Point nodes[MAX_LENGTH];? //蛇身数组,MAX_LENGTH为最大蛇长 贪吃蛇是在不断的运动的,我们研究蛇的运动可以发现这样的特点: 1. 蛇头由键盘控制,键盘不操作时,保持原有方向运动;(用 int direction;表示) 2. 运动时,蛇身后面一节移动到前面一节的位置。当我们用nodes[0]表示蛇头的时候,nodes[1]运动到nodes[0]处;nodes[2]运动到nodes[1]处...。 3. 吃到一个食物以后,蛇身会增加一节。即该数组中的有效数据个数加一。(用int length;表示) 根据上面的情况,我们可以设计蛇的数据结构如下: struct Snake { ?? struct Point nodes[MAX_LENGTH];? //蛇身数组,保存每节蛇身的坐标。MAX_LENGTH为最大蛇长 ??? int length;??? //当前蛇长 ??? int direction; //蛇头运动方向 ??? int live;????? //蛇活的,还是已经死了? } 2.1.2 关于食物,有两个属性: 1. 坐标位置 2. 状态:存在,或被吃。 故我们用以下结构表示: struct Food { ??? struct Point position;? //食物的位置 ??? int exist; ???????????? //存在?还是被吃? }

2.2 系统模块划分和模块结构

void main() {

init(); /*初始化*/

l=1;

while(l) /*循环游戏*/

{

select(); /*游戏速度和结束的选择菜单*/

gamePlay(); /*游戏主程序*/

}

close(); /*关闭游戏*/

}

2.3 流程图



2.4 数据类型、全局变量和函数说明

2.4.1数据类型

struct Point { /*一个存放点坐标的结构体*/

int x, y; /*被多个结构体调用的基本参数,所以统一用point结构体来表示*/

};

struct Snake { /*用来模拟蛇状态的结构体*/

struct Point nodes[MAX_LENGTH]; /*用来存放蛇每一节的位置*/

int length; /*蛇长*/

int direction; /*蛇移动的方向*/

int live; /*蛇是否活着*/

} snake;

/*比较形象的把蛇抽象为一个数据类型*/

struct Food { /*用来模拟食物状态的结构体*/

struct Point position; /*食物的位置*/

int exist; /*食物是否存在*/

} 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 程序测试和运行结果



----------------------------------------------------------------------------选择速度开始或退出



----------------------------------------------------------------------------------------游戏运行中



--------------------------------------------------------------------------------------------------------游戏结束

4 课程报告小结

【遇到的问题及解决方法分析等】

4.1分数重叠显示

解决方法:每次都用一块黑的矩形覆盖

setfillstyle(1,16);

bar(45,45,150,80);

4.2速度太快

解决方法:循环delay

for(d=0;d请点击下方选择您需要的文档下载。

  1. 数据结构ch01第1章绪论
  2. 数据结构讨论题无答案
  3. 返校复学第一课课程设计参考方案
  4. 《分数的产生和意义》名师教案
  5. 大学英语六级作文高分万能模板及高分句式大汇总
  6. 《条形统计图》教学设计
  7. L1第1次课知识点总结
  8. Java程序设计报告《贪吃蛇》
  9. 飞行器总体设计 课程设计
  10. 函数的表示法(1) 教学设计
  11. 1.2.2函数的表示法教案(讲)
  12. 课程设计 报告
  13. python正则
  14. 3.2-2 段落编号的应用

以上为《《计算机程序设计》课程设计贪吃蛇实验报告》的无排版文字预览,完整格式请下载

下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。

图片预览