sokosol.c
author viric@llimona
Sat, 06 May 2006 10:08:41 +0200
changeset 8 b41a580b3abe
parent 6 bfbca2c0fc70
child 26 95fccfcbd04c
permissions -rw-r--r--
The code compiles with pedantic without warnings. The map functions are better isolated.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6
bfbca2c0fc70 More file separation.
viric@llimona
parents: 4
diff changeset
     1
#include <assert.h>
0
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
     2
#include <stdio.h>
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
     3
#include <string.h>
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
     4
#include <stdlib.h>
4
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents: 3
diff changeset
     5
#include "general.h"
0
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
     6
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
     7
#define NBOX(n) ((n)<<2)
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
     8
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
     9
/* SOKOBAN Solution Finder
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    10
 *
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    11
 * Input File Format: XSB
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    12
 *
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    13
 * XSB Format definition:
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    14
 * 	Character matrix of:
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    15
 * 		@	MAN
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    16
 * 		#	WALL
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    17
 * 		$	BOX
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    18
 * 		*	BOX over PLATFORM
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    19
 * 		+	PLATFORM
4
d9259a605dec A cleaner version, split between different files.
viric@llimona
parents: 3
diff changeset
    20
 * 		-	CORNER (optional) Where a BOX should not be put
0
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    21
 * 	Everything that cannot be reached by the man or boxes (WALLS) must be
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    22
 * 	marked as is: WALLS.
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    23
 * 	All lines must be of the same length.
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    24
 */
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    25
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    26
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    27
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    28
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    29
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    30
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    31
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    32
int main(int argn, char **argv)
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    33
{
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    34
	struct Map Morigin;
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    35
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    36
	if (argn != 2)
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    37
	{
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    38
		printf("Usage: %s <mapfile>\n", argv[0]);
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    39
		exit(3);
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    40
	}
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    41
	ReadMap(&Morigin, argv[1]);
6
bfbca2c0fc70 More file separation.
viric@llimona
parents: 4
diff changeset
    42
	assert(Morigin.NumPlatforms > Morigin.NumBoxesInPlatform);
0
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    43
6
bfbca2c0fc70 More file separation.
viric@llimona
parents: 4
diff changeset
    44
	init_os();
0
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    45
6
bfbca2c0fc70 More file separation.
viric@llimona
parents: 4
diff changeset
    46
	return solve_map(Morigin);
0
be33ecaa3619 Initial commit.
viric@llimona
parents:
diff changeset
    47
}