Puissance 4 en C. (Tutoriel de Zds)

Le problème exposé dans ce sujet a été résolu.

Avant d'attaquer les diagonales, poste ce que tu as fait pour l'horizontale, pour qu'on valide ou non.

elegance

OK, donc j'ai testé et ça à l'air de fonctionner en tout cas avec mes deux fonctions :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/*
*fonction avec en paramètre nb_case(numéro de colonne), current_indice : indice du dernier pion ajouté, caractere le caractere du joueur.
*La fonction va de l'indice [current_indice(indice du dernier pion)][nb_case - 1] juqu'a [current_indice][0];
*-> Donc la fonction fait un parcours vers la gauche.
*Si deux pions sont identiques donc le pion [current_indice][nb_case - 1] et celui à sa gauche
*->on incrémente compteur et décrémente i.
*sinon on break la boucle pour.
*/
int Puiss4_parcours_horizontal_gauche(Puiss4 A, int nb_case, int current_indice, char caractere)
{
  int i;
  int compteur = 1;
  for(i = nb_case - 1 ; i != 0 ; i--)
  {
    if(A->data[current_indice][i] == caractere)
    {
      if(A->data[current_indice][i] == A->data[current_indice][i - 1])
      {
        compteur++;
        printf("Compteur : %d\n", compteur);
      }
    }
    else
      {
        printf("Break : %c != %c\n",A->data[current_indice][i], caractere);
        break;
      }
  }
  return compteur;
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/*
*fonction avec en paramètre nb_case(numéro de colonne), current_indice : indice du dernier pion ajouté, caractere le caractere du joueur.
*La fonction va de l'indice [current_indice(indice du dernier pion)][nb_case - 1] juqu'a [current_indice][A->colonnes - 1(nombre de colonnes - 1)];
*-> Donc la fonction fait un parcours vers la droite.
*Si deux pions sont identiques donc le pion [current_indice][nb_case - 1] et celui à sa droite;
*->on incrémente compteur et incrémente i.
*sinon on break la boucle pour.
*/
int Puiss4_parcours_horizontal_droite(Puiss4 A, int nb_case, int current_indice, char caractere)
{
  int i;
  int compteur = 1;
  for(i = nb_case - 1 ; i < A->colonnes - 1; i++)
  {
    if(A->data[current_indice][i] == caractere)
    {
      if(A->data[current_indice][i] == A->data[current_indice][i + 1])
      {
        compteur++;
        printf("Compteur : %d\n", compteur);
      }
    }
    else
        {
          printf("Break : %c != %c\n",A->data[current_indice][i], caractere);
          break;
        }
      }
      return compteur;
}
+0 -0

Imaginons la situation suivante :

  • je note les colonnes A à G, et les lignes de 1 à 6.

  • le situation est : Il y a des pions rouges en cellules B1 D1 et E1 ; et des pions jaunes à différents endroits ;

  • Le joueur avec les pions rouges joue, et pose son pion en case C1. Que se passe-t-il dans une partie de Puissance 4, que se passe-t-il avec ton programme ?

Ca fait trop longtemps que tu tournes en rond sur cet exercice, tu aurais tout intérêt à suivre le conseil de Taurre, et consulter la solution.

Ce sujet est verrouillé.