author | viric@llimona |
Sun, 07 May 2006 01:30:29 +0200 | |
changeset 11 | dcfe4d2d4387 |
parent 10 | 9148590f009d |
child 12 | a2c334a71a6b |
child 25 | b37843173279 |
permissions | -rw-r--r-- |
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); |
10 | 75 |
int is_new_map(const struct Map maps[], const int depth); |
6 | 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 | 81 |
void init_os(); |
82 |
void PrintMove(struct BoxMove b); |
|
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 | 86 |
int solve_map(const struct Map origin); |