#include #define SIMULATION #include #include "../leelib/leelib.h" #include "../lee-algorithm/lee-algorithm.h" #include "../cell/cell.h" extern int unexpanded_matrix[MAZE_SIZE][MAZE_SIZE]; extern const cell neighbours[4]; void addBlock(robot r, direction dir, cell targetCell, stack *s); void simple_control() { //TODO: OUTDATED, rewrite if needed. /* read the starting and end station.*/ cell startCell, targetCell; printf("STARTING AND ENDING STATION: "); readStation(&startCell.x, &startCell.y); readStation(&targetCell.x, &targetCell.y); robot r; r.dir = getStartDirection(startCell); r.pos = startCell; stack s; stack_init(&s); lee_run(r, targetCell, &s); while (s.length > 0) { move(&r, stack_pop(&s)); printMatrix_with_current_pos(unexpanded_matrix, r); printf("BLOCKAGE: "); char input; scanf("%c", &input); switch (tolower(input)) { case 'n': addBlock(r, NORTH, targetCell, &s); break; case 's': addBlock(r, SOUTH, targetCell, &s); break; case 'e': addBlock(r, EAST, targetCell, &s); break; case 'w': addBlock(r, WEST, targetCell, &s); break; default: break; } } stack_free(&s); } void addBlock(robot r, direction dir, cell targetCell, stack *s) { cell block; cell_add(&block, r.pos, neighbours[dir]); unexpanded_matrix[block.x][block.y] = -2; // putting -2 makes it not work??? if (!validatePath(r, *s)) { stack_reinit(s); lee_run(r, targetCell, s); } }