Ejemplo n.º 1
0
/*
 * Update the floodfill map based on the current recorded maze
 * Input: Traversal - trav
 * Return: None
 */
void Navigation::updateFloodfill(Traversal trav)
{
  bool foundFlag;
  int temp;

  for(int i=0; i<CELL_MAX-1; i++)
  {
    foundFlag = false;
    for(int j=0; j<CELL_MAX; j++) // y-coordinates
    {
      for( int k=0; k<CELL_MAX; k++) // x-coordinates
      {
        if(floodfill[k][j]==i)
        {
          foundFlag = true;
          temp = trav.getTraversalVal(k, j);
          // Check North 
          if(j > 0)
            if((floodfill[j-1][k]==CELL_MAX)&&((temp&0x01) != 0x01))
              floodfill[j-1][k] = floodfill[j][k]+1;
          // Check East 
          if(k < BOARD_MAX-1)
            if((floodfill[j][k+1]==CELL_MAX) && ((temp&0x02) != 0x02))
              floodfill[j][k+1] = floodfill[j][k]+1;
          // Check South 
          if(j < BOARD_MAX-1)
            if((floodfill[j+1][k]==CELL_MAX) && ((temp&0x04) != 0x04))
              floodfill[j+1][k] = floodfill[j][k]+1;
          // Check West 
          if(k > 0)
            if((floodfill[j][k-1]==CELL_MAX)&&((temp&0x08) != 0x08))
              floodfill[j][k-1] = floodfill[j][k]+1;
        }
      }
    }
    if(!foundFlag){ break; }
  }
  

}