general.h
author viric@mandarina
Sat, 06 May 2006 13:24:06 +0200
changeset 9 622136ed6c62
parent 8 b41a580b3abe
child 10 9148590f009d
permissions -rw-r--r--
Added description to general.h, from where the prototypes come from.

#define BOX '$'
#define WALL '#'
#define MAN '@'
#define PLATFORM '.'
#define BOXINPLATFORM '*'
#define MANINPLATFORM 'E'
#define BLANK ' '
#define CORNER '-'
#define MANCANMOVE '+'

/* #define DEBUG */

enum
{
	ALARM_SECONDS=1,
	MAX_X=50,
	MAX_Y=50,
	MAX_MOVES=50,
	MAX_STEPS=50,
	MAX_BOXES=15
};


enum logic
{
	TRUE=1,
	FALSE=0
};

struct Position
{
	int x;
	int y;
};

struct Map
{
	char Cells[MAX_Y][MAX_X];
	char cells_boxes[MAX_Y][MAX_X];
	char man_moves[MAX_Y][MAX_X];
	int SizeX, SizeY;
	struct Position Man;
	int NumPlatforms;
	int NumBoxesInPlatform;
	struct Position Box[MAX_BOXES];
	int NumBoxes;
};



enum e_direction
{
	DIR_LEFT,
	DIR_RIGHT,
	DIR_DOWN,
	DIR_UP
};

static const struct Position move_vectors[4] = {
	{0, 1},
	{0, -1},
	{1, 0},
	{-1, 0}};

struct BoxMove
{
	int box;
	struct Position dir;
};


/* Prototypes for map managing
 * map.c */
void CopyMap (struct Map *Mdest, const struct Map *Morig);
int is_new_map(struct Map maps[], int depth);

/* Prototypes for unix i/o, processes
 * os.c */
void ReadMap(struct Map *M, char *FileName);
void ShowMap (const struct Map *M);
void init_os();
void PrintMove(struct BoxMove b);

/* Functions related to map solution
 * algorithm.c */
int solve_map(const struct Map origin);