当前位置:首页 > 吃金豆游戏的设计
2、游戏出现的各个对象:
Empty Pacman Scene Bean Monster Wall
分析:一个场景分成N 行N列的小Cell,每个Cell有行,列等属性。 Pacman,Monster,Bean,Wall,Empty又可看作是一个特殊的Cell。Pacman和Monster是可运动的,而Bean和Wall是静止的,此外它们场景在绘出来的图像也各不相同。
2.1数据结构的定义:
(1)静止的Cell,分为三种类型,定义如下: #define EMPTY 0 #define WALL 1 #define BEAN 2 #defien CELL_SIZE 32
typedef struct{
int kind; /*Cell的类型*/ int row; int col; }Cell;
与Cell相关的函数定义:
void drawCell(Cell t){ /*画出一个Cell*/
switch(t.kind){
case EMPTY: draw_empty(t);break; case WALL: draw_wall(t);break; case BEAN: draw_bean(t);break; } }
void draw_empty(Cell t); void draw_wall(Cell t); void draw_bean(Cell t);
(2)场景是由M*N个Cell构成的,场景定义如下: #define MAX_ROLS 30 /*最大行数*/ #define MAX_COLS 30 /*最大列数*/ int rols; /*实际总行数*/ int cols; /*实际总列数*/
Cell scene[MAX_ROLS][MAX_COLS]; /*用一个元素为Cell的二维数组代表场景*/
与场景相关的函数定义:
void loadScene(char *fileName); /*从文件加载场景至scene数组*/ void drawScene(void); /*画出场景*/
(3) Pacman和Monster都游戏中可运动的的角色(Actor),其结构定义如下: #define RIGHT 0 #define UP 1 #define LEFT 2 #define DOWN 3 #define TRUE 1 #define FALSE 0 typedef struct{ int row; int col;
int direction; /*运动的方向*/ int isRunnning; /*是否在动*/ }Actor;
与Actor相关的函数定义:
void drawPacman(void); /*画pacman*/
void turn_pacman(int key_code); /*根据玩家方向按键调整pacman的运动方向*/ void move_pacman();
void drawMonster(void);
共分享92篇相关文档