Advertisement
bildramer

Untitled

May 26th, 2011
405
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.32 KB | None | 0 0
  1.  
  2. bool check_node(int x, int y, int z, char (*map)[MAP_X][MAP_Y][MAP_Z],
  3.                 bool destroy)
  4. {
  5.     bool visited;
  6.     list<Position> path;
  7.     list<Position> nodes;
  8.     char mark[MAP_X][MAP_Y][MAP_Z];
  9.     //set it to 0 here
  10.     memset(mark,0,MAP_X*MAP_Y*MAP_Z);
  11.    
  12.     Position new_pos;
  13.     new_pos.x = x;
  14.     new_pos.y = y;
  15.     new_pos.z = z;
  16.     nodes.push_back(new_pos);
  17.    
  18.     while (!nodes.empty()) {
  19.         Position node = nodes.back();
  20.         nodes.pop_back();
  21.        
  22.         if (node.z == 63) {
  23.             return true;
  24.         }
  25.        
  26.         // already visited?
  27.         if (!mark[node.x][node.y][node.z])
  28.         {
  29.             path.push_back(node);
  30.             mark[node.x][node.y][node.z]=1;
  31.             x = node.x;
  32.             y = node.y;
  33.             z = node.z;
  34.             add_node(x, y, z - 1, map, nodes);
  35.             add_node(x, y - 1, z, map, nodes);
  36.             add_node(x, y + 1, z, map, nodes);
  37.             add_node(x - 1, y, z, map, nodes);
  38.             add_node(x + 1, y, z, map, nodes);
  39.             add_node(x, y, z + 1, map, nodes);
  40.         }
  41.     }
  42.  
  43.     // destroy the node's path!
  44.     for (list<Position>::const_iterator iter = path.begin();
  45.          iter != path.end(); ++iter)
  46.     {
  47.         (*map)[iter->x][iter->y][iter->z] = 0;
  48.     }
  49.     return false;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement