#include #include #include #include"maze_parameter.h" #include"maze_func.h" using namespace std; void flood(int *map, int *copy_wall) { int num = 0; int size_x = mark.size(); int size_y = mark[0].size(); map[rob_x0 * (size_y) + rob_y0] = 0; do { num++; 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++; } } } } } } while (map[((target_x - 1) * size_y) + (target_y - 1)] == -1 && num < (size_x * size_y)); }