int main (int argc, char **argv) { int solver, direction = NORTH, steps = 0; maze_t* maze; walker_t* walker; if (argc < 2){ printf("Error: filename should be an argument"); return 0; } maze = read_maze(argv[1]); walker = init_walker(maze); printf("[0] Random solver\n[1] Left-hand solver\n[2] Breadcrum solver\n" "Choice: "); scanf("%d", &solver); while ((*maze).solved != 1){ switch(solver){ case 0: direction = random_solver(maze, walker, direction); break; case 1: direction = left_hand_solver(maze, walker, direction); break; case 2: direction = breadcrum_solver(maze, walker, direction); break; default: printf("Error: that's not a choice\n"); return 0; } steps++; print_maze(maze); if (steps >= MAX_STEPS) break; } if ((*maze).solved == 1) printf("Found exit in %d steps\n", steps); else printf("\nCould not find exit after %d steps\n", steps); return 0; }
/* * In this function the input gets checked and the other functions are called * in the correct order. */ int main (int argc, char **argv) { maze_t* maze; char *solver[] = {"random solver", "smart random solver", "left wall solver", "right wall solver" }; walker_t* walker; int i, count, dir, printmaze; if (argc < 2) { printf("The filename of the maze should be passed as an argument\n"); return 0; } if (argc > 2) { i = atoi(argv[2]); if (i < 0) { printf("Don't use negative numbers"); return 0; } } else i = 0; if (argc > 3) { printmaze = atoi(argv[3]); } else printmaze = 1; for(; i < AMNT_SOLVERS; i++) { srand(SEED); dir = NORTH; maze = read_maze(argv[1]); walker = init_walker(maze); count = 0; while (count < MAX_STEPS) { count++; switch(i) { case 0: dir = random_solver(maze, walker); break; case 1: dir = smart_random_solver_1(maze, walker, dir); break; case 2: dir = left_wall_solver(maze, walker, dir); break; case 3: dir = right_wall_solver(maze, walker, dir); break; } if(printmaze) { print_maze(maze, walker->row, walker->col); printf("%d\n", count); } if (at_exit(maze, walker)) break; } if (count < MAX_STEPS) printf("Found exit using the %s after %d steps\n", solver[i], count); printf("Press key to continue\n"); getchar(); } return 0; }