Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int maze(unsigned char labyrinth[100][100], uint8_t size_x, uint8_t size_y, uint8_t start_x, uint8_t start_y) {
- // for moving up in the maze
- if (start_x > 0) {
- if (labyrinth[start_x - 1][start_y] == MAZE_FINISH) {
- return 0;
- } else {
- if (labyrinth[start_x - 1][start_y] == MAZE_WALKWAY) {
- labyrinth[start_x - 1][start_y] = MAZE_STEP;
- if (maze(labyrinth, size_x, size_y, start_x - 1, start_y) == 0) {
- return 0;
- } else {
- labyrinth[start_x - 1][start_y] = MAZE_WRONG;
- }
- }
- }
- }
- // for moving down in the maze
- if (start_x < size_x) {
- if (labyrinth[start_x + 1][start_y] == MAZE_FINISH) {
- return 0;
- } else {
- if (labyrinth[start_x + 1][start_y] == MAZE_WALKWAY) {
- labyrinth[start_x + 1][start_y] = MAZE_STEP;
- if (maze(labyrinth, size_x, size_y, start_x + 1, start_y) == 0) {
- return 0;
- } else {
- labyrinth[start_x + 1][start_y] = MAZE_WRONG;
- }
- }
- }
- }
- // for moving left in the maze
- if (start_y > 0) {
- if (labyrinth[start_x][start_y - 1] == MAZE_FINISH) {
- return 0;
- } else {
- if (labyrinth[start_x][start_y - 1] == MAZE_WALKWAY) {
- labyrinth[start_x][start_y + 1] = MAZE_STEP;
- if (maze(labyrinth, size_x, size_y, start_x, start_y - 1) == 0) {
- return 0;
- } else {
- labyrinth[start_x][start_y - 1] = MAZE_WRONG;
- }
- }
- }
- }
- // for moving right in the maze
- if (start_y < size_y) {
- if (labyrinth[start_x][start_y + 1] == MAZE_FINISH) {
- return 0;
- } else {
- if (labyrinth[start_x][start_y + 1] == MAZE_WALKWAY) {
- labyrinth[start_x][start_y + 1] = MAZE_STEP;
- if (maze(labyrinth, size_x, size_y, start_x, start_y + 1) == 0) {
- return 0;
- } else {
- labyrinth[start_x][start_y + 1] = MAZE_WRONG;
- }
- }
- }
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment