Bug jeu TicTacToe

Bonjour à tous,
J’ai un petit soucis, je suis entrain de faire un exercice ou je dois réaliser le jeu du « TicTacToe » (Morpion ou encore Croix & Rond).
Mon application marche « bien » sauf lorsque j’ai un gagnant.
Le plateau se reset correctement mais j’ai toujours la case 0 (celle en haut a gauche) qui garde l’image sans la reset alors que mes autres case sont bien reset.

Je vous met un screen de l’application ainsi que ma fonction qui devrait reset mon plateau, si quelqu’un a déjà eu affaire à ce genre de « bug » ou si je rate quelque chose.

Et voici ma fonction qui reset :


la variable filledArray = permet de vérifier si une case appartient au joueur 1 ou 2 ou 0 pour personne.
La variable buttons = permet de vérifier si une case est utilisé ou pas.

Merci d’avance

vérifie si le bouton 0 porte bien le tag 0.

Oui il porte bien le tag 0

Etrange !
Au fait, pourquoi faire un reset spécifique dans la configuration gagnante ?
Que le joueur perde ou gagne, il faut remettre le tableau de jeu à l’état vierge, pour faire une nouvelle partie. Une méthode unique suffit pour les deux cas.

Sinon, je ne comprend pas l’intérêt du tableau buttons[], puisque l’information sur l’utilisation de la case est déjà présente dans le tableau filledArray[] (valeur 0 => case n’appartenant à personne).

Ceci dis, tu devrais utiliser un type spécifique pour stocker les informations, plutôt que des valeurs numériques.

enum ContenuCase {

case vide

case joueur1

case joueur2

}

C’est plus lisible, et évite les erreurs.

Merci pour t’as réponse !
Alors déjà oui tu as raison le tableau buttons[] sert à rien haha j’avais pas pensé a utilisé la valeur 0 de la case :see_no_evil: Merci pour ça haha

En faite le but ici c’est de faire le plus de partie possible en moins de 3min donc pour reset la partie j’avais une fonction si gagnant et une autre si égalité (que je n’est pas encore fait a cause du bug de la case 0)
Mais oui après je pense faire qu’une seul méthode pour reset dans les 2 cas.

Pour l’enum oui j’allais le faire mais j’ai voulu tester sans au début pour gagner un peu de temps (même si le gain n’est pas énorme haha)

En tous cas merci pour tes réponses !

Je suis encore bloqué avec ce bug bizarre d’affichage puisque la case se remet bien a vide après un reset.

J’ai trouvé !
Il ne faut pas utiliser la valeur 0 pour un tag. C’est une valeur par défaut signifiant « Cet objet n’a pas de tag ». Pour la méthode viewWithTag(), le premier bouton est invisible puisque UIKit considère qu’il n’a pas de tag. Donc forcément, impossible de remettre à zéro un objet qu’il n’a pas trouvé !

En changeant le tag du premier bouton par une autre valeur, 9 par exemple, cela fonctionne. Ou en numérotant tes objets de 1 à 9.

J’ai fait un petit prototype pour comprendre ton problème (je n’ai pas codé depuis un certain temps, cela me permet de replonger dans le bain).

1 J'aime

Wouaa ! Franchement merci !
J’avais pas pensé à regardé du coté du tag !
ça marche nickel merci beaucoup !
Reste plus qu’à implémenter la détection de l’égalité maintenant !