2011-07-09 3 views
0

Actuellement, je n'utilise que deux bitvectors, un pour les blocs rouges et un pour le bleu. Les blocs sont empilés sur un autre dans une grille de 10x10. Quand une explosion se produit à partir d'une bombe pour seulement des blocs rouges dans une direction verticale, je fais juste des calculs simples et vérifie le bitvector pour un coup donc le pire que j'ai à faire est de 10 vérifications et une recherche rapide.Algorithme de suppression de blocs nécessaire (apparenté à Bomberman)

Maintenant, je veux faire en sorte qu'une bombe puisse détruire tous les blocs rouges connectés du bloc de départ (sens connecté vertical, horizontal ou diagonal les uns des autres).

Quel serait le meilleur moyen de s'en approcher? La distribution est aléatoire mais généralement quelque chose comme 40/60. Les choses avec lesquelles je dois travailler sont, comme je l'ai dit, le bitvector, les identifiants de blocs et les types de blocs basés sur leur interface. Est-il préférable de vérifier 1 ou 2 anneaux extérieurs de blocs chaque cadre sur un filetage séparé pour partitionner le travail (donc 20 contrôles par trame) ou y at-il une façon plus élégante de le faire?

Répondre

2

Maintenant, je veux faire en sorte qu'une bombe peut détruire tous les blocs rouges connectés à partir du bloc de départ

Sons comme un travail pour le flood fill algorithm.

La distribution est aléatoire mais généralement de l'ordre de 40/60.

Honnêtement, je ne comprends pas ce que vous voulez dire.

En ce qui concerne les détails d'implémentation, ceux-ci diffèrent selon la langue.

+1

Wow EXACTEMENT ce dont j'avais besoin, je ne pouvais pas le mettre en mots. Quand j'ai dit 40/60, je voulais dire 40%/60% des blocs rouges/bleus ou bleus/rouges. – Ilya

+0

Ah, c'est vrai. Eh bien, bonne chance pour l'appliquer, ne devrait pas être trop difficile. –

+0

Pas du tout heh. Merci. – Ilya

Questions connexes