Étant donné un ensemble de tuiles sur une grille, je veux déterminer:
- Si les tuiles font une figure fermée
- Si les tuiles font une figure fermée lorsque vous comptez les côtés de la planche comme bord de la figure
- Si l'une des deux déclarations précédentes est vraie, quelles tuiles supplémentaires se trouvent à l'intérieur de la figure ci-jointe, la forme initiale des tuiles.
Le joueur commencera par appuyer sur une tuile, puis en faisant glisser son doigt vers d'autres tuiles pour créer une chaîne de tuiles de même couleur. Je vérifierai au fur et à mesure pour voir si la prochaine tuile est valide. Ex. Si le joueur commence sur un carreau rouge leur seul mouvement suivant est valide pour une tuile rouge adjacente (diagonale do count). Lorsque l'utilisateur lève le doigt, je dois pouvoir vérifier les 3 éléments ci-dessus.
Donc, ma pensée initiale était que, puisque je vérifiais la validité de la chaîne à chaque fois que je partais, lorsque le joueur levait le doigt, je pouvais vérifier si la première et la dernière tuile étaient adjacentes. (Je sais déjà qu'ils sont de la même couleur.) S'ils étaient adjacents, j'avais le pressentiment que j'avais fait une figure fermée, et j'allais venir ici pour essayer de voir si je manquais quelque chose de gros et pour obtenir une sorte de preuve logique / mathématique que mon intuition était correcte (ou un exemple le prouvant incorrect.)
Mais c'est à ce moment-là que j'ai pensé à l'article numéro 2: je dois également tenir compte des chaînes qui utilisent un bord de la planche comme côté de la figure ci-jointe. Dans ce cas, le premier et le dernier élément de la chaîne ne seraient pas adjacents, mais j'aurais toujours une figure jointe. Alors maintenant, je suis de retour à la case départ, un peu.
Que puis-je faire avec cette chaîne de coordonnées de grille pour déterminer si elles font une figure fermée ou non? Et une fois que je ne sais que j'ai une figure ci - jointe, quelle est la meilleure façon d'obtenir une liste supplémentaire de toutes les tuiles qui tombent à l' intérieur de ses limites?
Ci-dessus, j'ai dessiné des images de ce que j'attends des 4 résultats possibles de ce test.
La chaîne ne fait pas de figure fermée.
La chaîne fait une figure fermée.
Si vous comptez les côtés de la planche comme un bord (ou plus d'un bord) de la figure, la chaîne fait une figure fermée.
La chaîne fait une figure fermée, mais il existe des points de données supplémentaires (valablement sélectionnés par l'utilisateur comme faisant partie de la chaîne) qui ne font pas partie de la figure créée.
Le cas 4 est le plus délicat, car il faudrait extraire les maillons de chaîne "supplémentaires" pour trouver la figure ci-jointe et les pièces qui s'y trouvent (mais pas autour de la zone "non fermée").
Alors ... Quelqu'un a une idée d'un bon moyen de résoudre ce problème, ou juste un point de départ pour moi? Je tourne en rond à ce stade et je pourrais utiliser une autre paire d'yeux.