#include <stdio.h>
+#include <stdlib.h>
#include "sokoban.h"
+//Still need to remove outside walls and unreachable places.
struct sokoban_screen *parse_screen(FILE *stream){
- int buffer;
+ int buffer, x, y;
+ x = 0;
+ y = 0;
+ struct sokoban_screen *head, *current;
+ head = NULL;
while((buffer = fgetc(stream)) != EOF){
- printf("%c", buffer);
+ 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;
+ }
}
- // Alex:
- // Screen reading
- // - Removing outside walls
- // - Bucket fill
- // - [tile]
- // - tile = structure {int, int, enumtile}
- return NULL;
+ return head;
}