• # commentaires

    Posté par (site web personnel, Mastodon) . En réponse au message Puissance 4, problème avec l'affichage du gagnant. Évalué à 4.

    Ce n'est pas forcément dans aGagne() que se trouve le problème. Est-ce que ça ne marche pas dans tous les cas où il y a 4 pions alignés ? (verticale, horizontale, diagonales droite et gauche)

    Dans ce bloc, il y a des choses étranges :

     aGagne(ttint_plateau);
     printf("%d\n", aGagne(ttint_plateau));
     if(aGagne(ttint_plateau)==0 || aGagne(ttint_plateau)==1 || aGagne(ttint_plateau)==2){
     printf("%d",aGagne(ttint_plateau));

    A quoi sert le premier appel aGagne(ttint_plateau) ? L'entier retourné n'est pas récupéré dans une variable, qui permettrait en plus de ne pas appeler à nouveau cinq fois la fonction ! Même remarque dans aGagne().

    Dans aGagne(), les return devraient être après les printf, sinon ils ne sont pas exécutés car on a déjà quitté la fonction.

    Le problème doit venir des tests d'égalité de quatre cases : en C, on ne peut tester l'égalité que de deux variables à la fois, on ne peut pas les enchaîner comme ça :

    if (ttint_plateau[int_i][int_j]==ttint_plateau[int_i][int_j+1]==ttint_plateau[int_i][int_j+2]==ttint_plateau[int_i][int_j+3]&& ttint_plateau[int_i][int_j]!=' '){

    Donc il manque des &&.