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.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
     1
#define BOX '$'
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
     2
#define WALL '#'
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
     3
#define MAN '@'
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
     4
#define PLATFORM '.'
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
     5
#define BOXINPLATFORM '*'
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
     6
#define MANINPLATFORM 'E'
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
     7
#define BLANK ' '
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
     8
#define CORNER '-'
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
     9
#define MANCANMOVE '+'
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    10
8
b41a580b3abe The code compiles with pedantic without warnings.
viric@llimona
parents: 6
diff changeset
    11
/* #define DEBUG */
4
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    12
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    13
enum
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    14
{
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    15
	ALARM_SECONDS=1,
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    16
	MAX_X=50,
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    17
	MAX_Y=50,
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    18
	MAX_MOVES=50,
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    19
	MAX_STEPS=50,
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    20
	MAX_BOXES=15
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    21
};
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    22
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    23
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    24
enum logic
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    25
{
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    26
	TRUE=1,
8
b41a580b3abe The code compiles with pedantic without warnings.
viric@llimona
parents: 6
diff changeset
    27
	FALSE=0
4
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    28
};
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    29
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    30
struct Position
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    31
{
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    32
	int x;
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    33
	int y;
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    34
};
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    35
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    36
struct Map
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    37
{
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    38
	char Cells[MAX_Y][MAX_X];
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    39
	char cells_boxes[MAX_Y][MAX_X];
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    40
	char man_moves[MAX_Y][MAX_X];
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    41
	int SizeX, SizeY;
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    42
	struct Position Man;
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    43
	int NumPlatforms;
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    44
	int NumBoxesInPlatform;
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    45
	struct Position Box[MAX_BOXES];
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    46
	int NumBoxes;
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    47
};
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    48
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    49
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    50
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    51
enum e_direction
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    52
{
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    53
	DIR_LEFT,
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    54
	DIR_RIGHT,
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    55
	DIR_DOWN,
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    56
	DIR_UP
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    57
};
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    58
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    59
static const struct Position move_vectors[4] = {
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    60
	{0, 1},
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    61
	{0, -1},
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    62
	{1, 0},
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    63
	{-1, 0}};
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    64
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    65
struct BoxMove
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    66
{
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    67
	int box;
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    68
	struct Position dir;
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    69
};
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    70
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    71
9
622136ed6c62 Added description to general.h, from where the prototypes come from.
viric@mandarina
parents: 8
diff changeset
    72
/* Prototypes for map managing
622136ed6c62 Added description to general.h, from where the prototypes come from.
viric@mandarina
parents: 8
diff changeset
    73
 * map.c */
4
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    74
void CopyMap (struct Map *Mdest, const struct Map *Morig);
8
b41a580b3abe The code compiles with pedantic without warnings.
viric@llimona
parents: 6
diff changeset
    75
int is_new_map(struct Map maps[], int depth);
6
bfbca2c0fc70 More file separation.
viric@llimona
parents: 4
diff changeset
    76
9
622136ed6c62 Added description to general.h, from where the prototypes come from.
viric@mandarina
parents: 8
diff changeset
    77
/* Prototypes for unix i/o, processes
622136ed6c62 Added description to general.h, from where the prototypes come from.
viric@mandarina
parents: 8
diff changeset
    78
 * os.c */
4
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    79
void ReadMap(struct Map *M, char *FileName);
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents:
diff changeset
    80
void ShowMap (const struct Map *M);
6
bfbca2c0fc70 More file separation.
viric@llimona
parents: 4
diff changeset
    81
void init_os();
bfbca2c0fc70 More file separation.
viric@llimona
parents: 4
diff changeset
    82
void PrintMove(struct BoxMove b);
bfbca2c0fc70 More file separation.
viric@llimona
parents: 4
diff changeset
    83
9
622136ed6c62 Added description to general.h, from where the prototypes come from.
viric@mandarina
parents: 8
diff changeset
    84
/* Functions related to map solution
622136ed6c62 Added description to general.h, from where the prototypes come from.
viric@mandarina
parents: 8
diff changeset
    85
 * algorithm.c */
6
bfbca2c0fc70 More file separation.
viric@llimona
parents: 4
diff changeset
    86
int solve_map(const struct Map origin);