J'essaie d'utiliser le remblai de crue algorithme permettant de trouver tous les objets adjacents similaires dans une liste, afin de les marquer pour les supprimer. J'ai essayé d'adapter le pseudo-code sur Wikipedia, mais je suis resté bloqué.
Chaque objet de la liste a une valeur X (int), une valeur Y (int), un nom et un bool (bool) à marquer pour la suppression. Je veux faire une correspondance sur le nom.
Le programme se bloque sans le try-catch, et se termine simplement avec. Il ne renvoie pas de message d'erreur. Voici ce que j'ai jusqu'à présent, en essayant de trouver des objets directement au-dessus.
//Find neighbouring bubbles
gameGrid.DetectNeighbours2(gameGrid.planets.Last(), gameGrid.planets.Last().name);
//Flood fill algorithm to detect all connected planets
internal void DetectNeighbours(Planet p, Planet.Name planetName)
{
try
{
if (p.planet != planetName)
return;
p.deletable = true;
DetectNeighbours(GetTopNode(p), planetName);
}
catch (Exception err)
{
Debug.WriteLine(err.Message);
}
}
internal Planet GetTopNode(Planet b)
{
foreach (Planet gridPlanet in planets)
{
if (gridPlanet .Y == b.Y - 50)
return gridPlanet ;
}
return b; //Don't think this is right, but couldn't think of alternative
}