#include #include #include #include #include"eyebot++.h" #include"maze_parameter.h" #include"maze_func.h" using namespace std; void flood(int *map, int *copy_map, int *copy_wall) { int num = 0; int size_x = mark.size(); int size_y = mark[0].size(); map[0] = 0; copy_map[0] = 0; do { for (int i = 0; i < size_x; i++) { for (int j = 0; j < size_y; j++) { if (map[(i * size_y) + j] != -1) { if (i > 0) { if (!copy_wall[(i * (size_y + 1) * 2) + (j * 2) + 1] && map[((i-1) * size_y) + j] == -1) //左边格子 { map[((i-1) * size_y) + j] = map[(i * size_y) + j] + 1; num++; } } if (i < size_x - 1) { if (!copy_wall[((i+1) * (size_y + 1) * 2) + (j * 2) + 1] && map[((i+1) * size_y) + j] == -1) //右边格子 { map[((i+1) * size_y) + j] = map[(i * size_y) + j] + 1; num++; } } if (j > 0) { if (!copy_wall[(i * (size_y + 1) * 2) + (j * 2) + 0] && map[(i *size_y) + (j-1)] == -1) { map[(i * size_y) + (j-1)] = map[(i * size_y) + j] + 1; num++; } } if (j < size_y - 1) { if (!copy_wall[(i * (size_y + 1) * 2) + ((j+1) * 2) + 0] && map[(i * size_y) + (j+1)] == -1) { map[(i * size_y) + (j+1)] = map[(i * size_y) + j] + 1; num++; } } } } } // for (int i = 0; i < size_x; i++) // { // for (int j = 0; j < size_y; j++) // { // map[(i * size_y) + j] = copy_map[(i * size_y) + j]; // } // } } while (map[(target_x * size_y) + target_y] == -1 && num < (size_x * size_y)); }