Je travaille sur un jeu de type boggle pour Android, en utilisant libgdx. L'utilisateur est présenté avec une grille de lettres 4x4 et doit trouver des mots en faisant glisser son doigt sur les lettres.
Contrairement à boggle, je veux que les lettres utilisées disparaissent. Les lettres restantes tomberont (vers le bas du tableau, l'orientation de l'écran est fixe) et le tableau est rechargé par le haut. Les utilisateurs peuvent faire pivoter le tableau pour essayer de mettre des lettres difficiles à utiliser à un meilleur endroit par une sélection stratégique de mots.
Un exemple:
d g a o
u o r T
h v R I
d G n a
Si je sélectionnais le mot GRIT, ces lettres disparaîtraient et les autres tomberaient:
d
u g a
h o r o
d v n a
puis être remplacé par de nouvelles lettres
d w x y
u g a z
h o r o
d v n a
Je suis coincé à trouver comment représenter le plateau et les tuiles.
J'ai essayé de représenter le tableau comme une matrice pour garder une trace des tuiles sélectionnées et des mouvements valides ainsi que des tuiles stockées dans une matrice afin qu'il y ait une cartographie facile. Cela fonctionne, mais j'ai dû écrire du code alambiqué pour faire pivoter la carte.
Comment les autres jeux gèrent-ils ce problème?
EDIT: Donc, en y réfléchissant, je devrais vraiment juste traiter mon point de contact en fonction de la rotation de la carte afin que les cellules restent constantes. Ci-joint une image de ce que je pense.
Réponses:
Je n'utiliserais pas du tout de tableaux pour cela car sa gestion deviendra de plus en plus complexe. Créez une structure de données de carte personnalisée avec des nœuds qui font référence à leurs voisins. Il s'agit essentiellement d'une LinkedList multidimensionnelle de nœuds. De cette façon, si la lettre d'un nœud est supprimée, les autres nœuds peuvent voir cela de manière encapsulée. Cela évite l'arithmétique compliquée des tableaux. Vous aurez besoin d'une grande fonction pour tout connecter correctement, mais une fois liée, la logique devrait être beaucoup plus facile à utiliser.
Vos nœuds périphériques auront des voisins définis
null
, alors assurez-vous de gérer cela en conséquence dans vos méthodes de la classe Node qui doivent faire référence aux voisins.J'ai utilisé cette approche pour implémenter Game Of Life de Conway et une fois que vous l'avez configuré, cela réduit considérablement la complexité de l'ajout d'une logique qui change l'état d'un nœud en fonction des voisins.
Selon la façon dont vous manipulez les nœuds de la carte, vous pouvez avoir besoin d'une méthode de carte pour parcourir et déterminer l'état ou l'action suivante et l'enregistrer dans chaque nœud. Suivez ensuite cela en itérant et en validant chaque nœud dans le nouvel état. Cela évite que les nœuds déterminent leur prochain état en regardant les nœuds qui ont déjà changé.
la source
Oui, la solution est que vous obtenez la valeur de votre matrice ou tableau et définissez cette valeur pour le tableau ou la matrice temporaire, puis définissez la valeur à partir de là, cela vous montre votre valeur de rotation. J'ai ajouté du code ci-dessous, je pense que cela vous aide
la source