time_start_read = clock();
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;
- }
+ 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();
#include <stdio.h>
#include <stdlib.h>
-#include "sokoban.h"
+#include "sokoban.h"
-//Still need to remove outside walls
+//Still need to remove outside walls and unreachable places.
struct sokoban_screen *parse_screen(FILE *stream){
- 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;
- }
+ 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;
+}