vgiant | Bonjour à tous et à toutes! Tout d'abord, merci de prendre du temps pour lire mon problème, qui sera pour vous très simple à résoudre je pense!
Alors voilà, j'ai créée une bataille navale, et tout fonctionne quasiment, excepté l'affichage "tel bateau est coulé", car je n'arrive pas à incrémenté une variable!
J'ai une fonction coup qui renvoit dans le main la valeur_retour (pour compter les cases qui restent dans la grille, et ainsi savoir si le jeu est fini ou non!)!
Tout fonctionne, mon problème est situé sur ce qui est en gras dans mon code :
Code :
- int coup(char* joueur, char grille_joueur[27][27], char
- grille_adversaire[27][27], int taille) {
- char abscisse, ordonnee;
- int colonne, ligne, valeur_retour, continue_saisie, vidage,pa=0;
- while ((vidage=getchar())!='\n');
- do {
- printf("%s : saisissez votre coup ", joueur);
- abscisse = getchar();
- /*printf("%c", abscisse);*/
- ordonnee = getchar();
- /*printf("%c\n", ordonnee);*/
- colonne = valide_abscisse(abscisse);
- ligne = valide_ordonnee(ordonnee);
- continue_saisie = 1;
- if ((colonne != -1) && (ligne != -1))
- if (grille_joueur[ligne][colonne] == '.')
- continue_saisie = 0;
- else
- {
- printf("colonne vaut %d\n",colonne);
- printf("ligne vaut %d\n",ligne);
- printf("Coup deja joue\n" );
- }
- }
- while (continue_saisie);
- if (grille_adversaire[ligne][colonne] == '.') {
- grille_joueur[ligne][colonne] = 'o';
- printf("a l'eau !\n" );
- valeur_retour = 0;
- }
- else if (grille_adversaire[ligne][colonne] == 'P') {
- grille_joueur[ligne][colonne] = 'x';
- pa=pa+1;
- if (pa!=5){
- printf("Porte-avions touche %d !\n",pa);
- }
- else
- {
- printf("Porte-avions coule !\n" );
- }
- valeur_retour = 1;
- }
- else if (grille_adversaire[ligne][colonne] == 'C') {
- grille_joueur[ligne][colonne] = 'x';
- printf("Croiseur touche !\n" );
- valeur_retour = 1;
- }
- else if (grille_adversaire[ligne][colonne] == 'D') {
- grille_joueur[ligne][colonne] = 'x';
- printf("Destroyer touche !\n" );
- valeur_retour = 1;
- }
- else if (grille_adversaire[ligne][colonne] == 'S') {
- grille_joueur[ligne][colonne] = 'x';
- printf("Sous-marin touche !\n" );
- valeur_retour = 1;
- }
- return valeur_retour;
- }
|
Voilà, à savoir que j'ai rentré les lettres des bateaux dans la grille du joueur pour savoir lequel était touché, maintenant j'aimerai pouvoir dire que le bateau est coulé! Seulement, la manière dont j'ai affecté la variable "pa" fait qu'à chaque fois que cette fonction coup est appelée, la variable "pa" retrouve sa valeur 0 par défaut.
A quel moment faut-il que je l'affecte à 0 pour qu'elle s'incrémente ensuite normalement? Faut-il faire une boucle quelque part?
J'arrive plus à réfléchir là, je sais que la réponse est toute bête, mais j'en peux plus, je m'en réfère à vos conseils avisés!
Merci d'avance pour votre réponse! |