#include <time.h>
#include <sylvan.h>
-#include "mc.h"
-//#include <sokoban.h>
-//#include <object.h>
-//#include <coord.h>
+#include "mc.h"
+#include "sokoban.h"
+//Global variables
bool DEBUG = false;
+strategy strat = HYBRID;
void usage(char *prg){
- fprintf(stderr,
+ fprintf(stderr,
"Usage:\n"
"\t%s [opts] [FILE [FILE [...]]]\n"
"\n"
}
void solve(FILE *inputstream){
- clock_t time_start, time_file_read;
- int buffer;
+ clock_t time_start_read, time_end_read;
+ clock_t time_start_encode, time_end_encode;
+
+ 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;
+ }
+ //parse_screen(inputstream);
+ time_end_read = clock();
- time_start = clock();
- while((buffer = fgetc(inputstream)) != EOF){
- printf("%c", buffer);
- // Alex:
- // Screen reading
- // - Removing outside walls
- // - Bucket fill
- // - [tile]
- // - tile = structure {int, int, enumtile}
+ time_start_encode = clock();
+ switch(strat){
+ case COORD:
+ if(DEBUG) fprintf(stderr, "Encoding coordinate based\n");
+ break;
+ case OBJECT:
+ if(DEBUG) fprintf(stderr, "Encoding object based\n");
+ break;
+ case HYBRID:
+ if(DEBUG) fprintf(stderr, "Encoding hybrid based\n");
+ break;
+ default:
+ fprintf(stderr, "Huh?");
+ exit(2);
}
- time_file_read = clock();
+ time_end_encode = clock();
- // Both: Encoding in both schemes
-
// Future: SMC
- fprintf(stderr, "CPU time taken: %fs\n",
- ((double) (time_file_read-time_start))/CLOCKS_PER_SEC);
+ fprintf(stderr, "Reading: %fs\n",
+ ((double) (time_end_read-time_start_read))/CLOCKS_PER_SEC);
+ fprintf(stderr, "Encoding: %fs\n",
+ ((double) (time_end_encode-time_start_encode))/CLOCKS_PER_SEC);
}
int main(int argc, char **argv){
- strategy strat = HYBRID;
int optchar;
while((optchar = getopt(argc, argv, "cdhoy")) != -1){
for(int filepathindex = optind; filepathindex < argc; filepathindex++){
char *currentfilepath = argv[filepathindex];
fprintf(stderr, "Processing: %s\n", currentfilepath);
- if(DEBUG) fprintf(stderr, "Strategy: %d\n", strat);
FILE *currentfile = fopen(currentfilepath, "r");
if(DEBUG) fprintf(stderr, "Opening file\n");
solve(currentfile);