strategy strat = HYBRID;
void usage(char *prg){
- fprintf(stderr,
+ fprintf(stderr,
"Usage:\n"
"\t%s [opts] [FILE [FILE [...]]]\n"
"\n"
clock_t time_start_encode, time_end_encode;
time_start_read = clock();
- //struct sokoban_screen *screen = parse_screen(inputstream);
- parse_screen(inputstream);
+ struct sokoban_screen *screen = parse_screen(inputstream);
+ while(screen != NULL){
+ switch(screen->tile){
+ case FREE: printf("x = %d y = %d tile = %s\n", screen->x, screen->y, "FREE");break;
+ case WALL: printf("x = %d y = %d tile = %s\n", screen->x, screen->y, "WALL");break;
+ case BOX: printf("x = %d y = %d tile = %s\n", screen->x, screen->y, "BOX");break;
+ case TARGET: printf("x = %d y = %d tile = %s\n", screen->x, screen->y, "TARGET");break;
+ case AGENT: printf("x = %d y = %d tile = %s\n", screen->x, screen->y, "AGENT");break;
+ case TARGAGENT: printf("x = %d y = %d tile = %s\n", screen->x, screen->y, "TARGAGENT");break;
+ case TARGBOX: printf("x = %d y = %d tile = %s\n", screen->x, screen->y, "TARGBOX");break;
+ }
+ screen = screen->next;
+ }
+ //parse_screen(inputstream);
time_end_read = clock();
time_start_encode = clock();
exit(2);
}
time_end_encode = clock();
-
+
// Future: SMC
fprintf(stderr, "Reading: %fs\n",
((double) (time_end_read-time_start_read))/CLOCKS_PER_SEC);
#include <stdio.h>
-
+#include <stdlib.h>
#include "sokoban.h"
+
+//Still need to remove outside walls
struct sokoban_screen *parse_screen(FILE *stream){
- int buffer;
- while((buffer = fgetc(stream)) != EOF){
- printf("%c", buffer);
- }
- // Alex:
- // Screen reading
- // - Removing outside walls
- // - Bucket fill
- // - [tile]
- // - tile = structure {int, int, enumtile}
- return NULL;
-}
+ int buffer, x, y;
+ x = 0;
+ y = 0;
+ struct sokoban_screen *head, *current;
+ head = NULL;
+ while((buffer = fgetc(stream)) != EOF){
+ if (buffer == '\n'){
+ x = 0;
+ y++;
+ }
+ else {
+ current = (struct sokoban_screen *)malloc(sizeof(struct sokoban_screen));
+ current->next = head;
+ switch(buffer) {
+ case ' ' : current->tile = FREE; break;
+ case '@' : current->tile = AGENT; break;
+ case '.' : current->tile = TARGET; break;
+ case '#' : current->tile = WALL; break;
+ case '$' : current->tile = BOX; break;
+ case '*' : current->tile = TARGBOX; break;
+ case '+' : current->tile = TARGAGENT; break;
+ default: return NULL;
+ }
+ current->x = x;
+ current->y = y;
+ x++;
+ head = current;
+ }
+ }
+ return head;
+ }