Bonjour,

J'ai finis un projet d'informatique, la bataille navale, il ne me reste plus qu'à faire une meilleure présentation du jeu.
Mon soucis c'est que lorsque je commence à entrer les coordonnées des placements des tirs, un message d'erreur de WINDOWS s'affiche, alors que je le compilateur indique aucun erreur.

Voici le code (ne faites pas aux erreurs d'orthographe dans les commentaires ^^) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
/*
Algo : Bataille navale
Derniere modification : 22/12/12
*/
 
 
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
 
 
 
const int NBJoueurs = 2, NBLignes = 5, NBBateaux = 4, LongNom = 12, NBColonne = 5;
const int INIT = -1, BATEAU = 1, tir = 2, coule = 3;
 
 
void saisirlesNoms (char n[NBJoueurs][LongNom]);
void afficherlesNoms (char n[NBJoueurs][LongNom]);
void initialisertableau (int t[NBJoueurs] [NBLignes] [NBColonne]);
void initialiserBateau (int t[NBJoueurs] [NBLignes] [NBColonne]);
void affPlateau(int t[NBJoueurs] [NBLignes] [NBColonne], int numj);
void affTir(int t[NBJoueurs] [NBLignes] [NBColonne],int tj[NBJoueurs] [NBLignes] [NBColonne], int numj);
bool fTesterFinJeu(int tj[NBJoueurs] [NBLignes] [NBColonne],int numjoueur);
int fJoueurSuivant(int numj);
 
 
int main()
{
 
    char nom[NBJoueurs][LongNom]; // mémorisation des noms
    int plateau[NBJoueurs] [NBLignes] [NBColonne]; // plateau de jeu
    int tir[NBJoueurs] [NBLignes] [NBColonne]; // plateau des tirs
 
    int numjoueur; // numero du joueur actuel
    int reponse; // saisie pour poursuite du jeu
 
    bool jeuPasTermine;
 
    /* INITIALISATION */
 
    saisirlesNoms(nom);
    afficherlesNoms(nom);
 
    do {
 
        initialisertableau(plateau); // raz du plateau
        initialiserBateau(plateau); // saisir les bateau
        initialisertableau(tir); // raz des tirs
 
        jeuPasTermine = true;
 
        numjoueur = 0;
 
        while (jeuPasTermine) {
            system("cls");
            // rechercher le joueur suivant
            numjoueur = fJoueurSuivant(numjoueur);
            printf("\n%s",nom[numjoueur]);
 
            // afficher les plateau de jeu et de tir
            affPlateau(plateau, numjoueur);
            printf("\nTirs :");
            affPlateau(tir, numjoueur);
 
            // demander la saisie du tir
            // demander un numero de ligne et de colonne
             // mémoriser ce tir dans le tableau de tir du joueur
             affTir(tir,plateau, numjoueur);
 
            // tester si c'est la fin du jeu
             jeuPasTermine = fTesterFinJeu(plateau, numjoueur);
 
        }
 
        printf("\nla gagnant : %s",nom[numjoueur]);
 
       printf("continuer ? 1=oui; 0=non");
        scanf("%d",&reponse);
     } while (reponse==1);
 
    return 0;
}
 
 
void saisirlesNoms (char n[NBJoueurs][LongNom]) {
    int i;
    for(i=0;i<NBJoueurs;i++) {
        printf("Saisir un nom : ");
        scanf("%s",n[i]);
    }
}
 
void afficherlesNoms (char n[NBJoueurs][LongNom]) {
    int i;
    for(i=0;i<NBJoueurs;i++) {
        printf("\nnom joueur %d est %s ",i+1,n[i]);
    }
}
 
void initialisertableau (int t[NBJoueurs] [NBLignes] [NBColonne]) {
   int i;
   int j;
   int k;
 
 
   for(i=0;i<NBJoueurs;i++) {
       for (j=0;j<NBLignes;j++) {
          for (k=0;k<NBColonne;k++) {
           t[i][j][k] = INIT;
          }
       }
   }
  }
 
void initialiserBateau (int t[NBJoueurs] [NBLignes] [NBColonne]) {
   int i;
   int j;
   int x;
   int y;
 
   for(i=0;i<NBJoueurs;i++) {
       printf("\njoueur %d :",i);
       for (j=0;j<NBBateaux;j++)
       {
           printf("\nSaisir les coordonnes x y du bateau");
           scanf("%d %d",&x,&y);
           t[i][x][y] = BATEAU;
           }
        affPlateau(t, i);
        }
}
 
 
 
void affPlateau(int t[NBJoueurs] [NBLignes] [NBColonne], int numj) {
    int j,k;
      for (j=0;j<NBLignes;j++) {
        printf("\n");
          for (k=0;k<NBColonne;k++) {
              printf("! ");
              if (t[numj][j][k] == INIT)
                 printf(".");
                else if (t[numj][j][k] == BATEAU )
                    printf("B");
                else if (t[numj][j][k] == tir )
                    printf("T");
                else if (t[numj][j][k] == coule )
                    printf("C");
                printf(" ");
          }
          printf("!");
          printf("\n");
          for(k=1;k<=NBColonne;k++)
            printf("----");
      }
}
 
void affTir(int t[NBJoueurs] [NBLignes] [NBColonne], int tj[NBJoueurs] [NBLignes] [NBColonne], int numj) {
   int j,k;
   int x;
   int y;
 
           printf("\nSaisir les coordonnes x y du tir");
           scanf("%d %d",&x,&y);
           t[numj][x][y] = tir;
 
           if(tj[fJoueurSuivant(numj)][x][y]==BATEAU) {
                printf("coule en %d %d",x,y);
                tj[fJoueurSuivant(numj)][x][y]=coule;
           }
//           }
//        affTir(t, i);
//        }
      for (j=0;j<NBLignes;j++) {
        printf("\n");
          for (k=0;k<NBColonne;k++) {
              if (t[numj][j][k] == INIT)
                 printf(".");
                else if (t[numj][j][k] == tir)
                    printf("T");
          }
      }
}
 
int fJoueurSuivant(int numj) {
    if (numj==0) return 1;
    else return 0;
}
 
/*
Si un joueur a tous ses bateaux coulés alors jeu pasterminé = faux
 
la fonction attend/reçoit
- un plateau
- le numero du joueur qui a joué
 
Elle va compter le nombre de bateaux du joueur suivant
 
si le nombre de batreau est à 0, elle retourne faux (fin du jeu) sinon vrai
 
 
*/
bool fTesterFinJeu(int tj[NBJoueurs] [NBLignes] [NBColonne],int numjoueur) {
    // compter le nombre de bateaux du joueur qui suit
    int ct=0,i,j, x,y;
     for (i=0;i<NBLignes;i++) {
        for (j=0;j<NBColonne; j++ ) {
          if (tj[fJoueurSuivant(numjoueur)][x][y]==BATEAU) ct=ct+1;
        }
     }
     if (ct==0) {
       return false;
     }
    else {
       return true;
     }
}
Merci beaucoup