贪吃蛇实验报告

  • 格式:doc
  • 大小:134.50 KB
  • 文档页数:17

下载文档原格式

  / 17
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《计算机程序设计》课程设计报告课题名称贪吃蛇游戏

班级

学号

姓名

指导教师

设计时间至

设计地点

常熟理工学院计算机科学与工程学院

目录

1 需求分析..................... 错误!未定义书签。

2 系统分析和设计............... 错误!未定义书签。

数据结构的设计和选择的理由 . 错误!未定义书签。

系统模块划分和模块结构 ..... 错误!未定义书签。

流程图..................... 错误!未定义书签。

数据类型、全局变量和函数说明错误!未定义书签。

3 程序测试和运行结果 (4)

4 课程报告小结 (5)

分数重叠显示 (5)

速度太快 (5)

食物可能出现在蛇身上 (5)

附录A:程序源代码 (6)

1 需求分析

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

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

2 系统分析和设计

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

本游戏中涉及的主要数据结构是如何表示运动的蛇、食物状态等问题。

2.1.1从游戏参考画面中我们可以看到,贪吃蛇的身体是一节节的,由一个个大小相同的方块组成,那么我们可以用一个(x,y)坐标为左上角的、固定宽度的正方形来表示一节蛇身。为表示连续的多节身体,那么我们可以采用数组(或链表,或线性表)等数据结构来表示。下面以数组方式为例:

struct Point {

int x, y;

}

struct Point nodes[MAX_LENGTH]; 蛇头由键盘控制,键盘不操作时,保持原有方向运动;(用 int direction;表示)

2. 运动时,蛇身后面一节移动到前面一节的位置。当我们用nodes[0]表示蛇头的时候,nodes[1]运动到nodes[0]处;nodes[2]运动到nodes[1]处...。

3. 吃到一个食物以后,蛇身会增加一节。即该数组中的有效数据个数加一。(用int length;表示)

根据上面的情况,我们可以设计蛇的数据结构如下:

struct Snake {

struct Point nodes[MAX_LENGTH]; 坐标位置

2. 状态:存在,或被吃。

故我们用以下结构表示:

struct Food {

struct Point

1

2.4.12.4.22.4.3

3

==&&[i].y== goto label;

}

附录A:程序源代码

/*writer: neolone(LB)*/

#include <>

#include <>

#include <>

#include <>

#include <>

#include <>

#include <>

#define TRUE 1

#define FALSE 0

#define UP 0x4800

#define DOWN 0x5000

#define LEFT 0x4B00

#define RIGHT 0x4D00

#define ESC 0x011B

#define SPEED1 0x0231

#define SPEED2 0x0332

#define SPEED3 0x0433

#define QUIT 0x0B30

#define ENTER 0x1C0D

#define MAX_LENGTH 100 /* max length of snake nodess */

#define GAME_SPEED 100 /* game speed */

/* data structure */

struct Point {

int x, y;

};

struct Snake {

struct Point nodes[MAX_LENGTH];

int length;

int direction;

int live;

} snake;

struct Food {

struct Point position;

int exist;

} food;

int

score=0,max,max1,max2,max3,left=200,top=200,right=300,bottom=300,lastx,lasty,ke yCode,keyCode2,sp,l,sel,times=1;

char text[80];

/* functions declaration */

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);

5