teleias

Flood Fill

May 15th, 2014
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.91 KB | None | 0 0
  1. static Vector<FieldSquare> iterativeFieldSquare(GameWorld gameWorld, Vector<FieldSquare> vector)
  2.     {
  3.         Queue<FieldSquare> setQ = new LinkedList<FieldSquare>();
  4.         Queue<FieldSquare> adjacentQ = new LinkedList<FieldSquare>();
  5.         for(GameObject go : gameWorld.getAllGameObjects())
  6.         {
  7.             if(!(go instanceof MonsterBall)){continue;}
  8.             Vector2 gov2 = go.getLocation();
  9.             FieldSquare fs = gameWorld.getFieldSquareAtLocation(gov2);
  10.             if(setQ.contains(fs)){continue;}
  11.             setQ.add(fs);
  12.             for(FieldSquare adjacents : gameWorld.getFieldSquaresAdjacentToLocation(gov2))
  13.             {
  14.                 if(!adjacents.getOwned())
  15.                     adjacentQ.add(adjacents);
  16.             }
  17.             do
  18.             {
  19.                 FieldSquare nextFS = adjacentQ.poll();
  20.                 Vector2 nextV2 = nextFS.getLocation();
  21.                 for(FieldSquare adjacents : gameWorld.getFieldSquaresAdjacentToLocation(nextV2))
  22.                 {
  23.                     if(!adjacents.getOwned() && !adjacentQ.contains(adjacents) && !setQ.contains(adjacents))
  24.                         adjacentQ.add(adjacents);
  25.                 }
  26.                 setQ.add(nextFS);
  27.             }while(adjacentQ.size() != 0);
  28.         }
  29.        
  30.         Vector<FieldSquare> result = new Vector<FieldSquare>(setQ);
  31.         return result;
  32.     }
  33.     static Vector<FieldSquare> recursiveFieldSquare(Vector2 v2, GameWorld gameWorld, Vector<FieldSquare> vector)
  34.     {
  35.         FieldSquare fs = gameWorld.getFieldSquareAtLocation(v2);
  36.         if(!vector.contains(fs))
  37.             vector.add(fs);
  38.         else
  39.             return vector;
  40.        
  41.         Queue<FieldSquare> queue = new LinkedList<FieldSquare>();
  42.         if(gameWorld.getFieldSquaresAdjacentToLocation(v2).size() != 0){
  43.             for(FieldSquare adjacents : gameWorld.getFieldSquaresAdjacentToLocation(v2)){
  44.                 if(adjacents != null)
  45.                 {
  46.                     if(adjacents.getStatus() == FieldSquareStatus.Unowned && !vector.contains(adjacents))
  47.                     {
  48.                         queue.add(adjacents);
  49.                     }
  50.                 }
  51.             }
  52.             FieldSquare qfs;
  53.             while((qfs = queue.poll()) != null)
  54.             {
  55.                 vector = (recursiveFieldSquare(qfs.getLocation(), gameWorld, vector));
  56.             }
  57.         }
  58.         return vector;
  59.     }
Advertisement
Add Comment
Please, Sign In to add comment