Changeset ,27
- Timestamp:
- 05/23/08 08:21:08 (8 months ago)
- branch-nick:
- code
- Files:
-
- 6 modified
-
Makefile (modified) (1 diff)
-
src/ia/ia.c (modified) (6 diffs)
-
src/ocean/ocean.c (modified) (5 diffs)
-
src/ocean/test.c (modified) (4 diffs)
-
src/texte/texte.c (modified) (4 diffs)
-
src/texte/texte.h (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
Makefile
r1 r27 1 1 CC=gcc 2 CFLAGS=-W -Wall -ansi -pedantic 2 CFLAGS=-W -Wall -ansi -pedantic -g 3 3 LDFLAGS= 4 4 EXEC=batnav 5 OBJ=src/ tableau.o src/sudoku.o src/main.o5 OBJ=src/ocean/ocean.o src/ia/ia.o src/texte/texte.o 6 6 7 7 util: $(OBJ) 8 8 $(CC) $(OBJ) -o $(EXEC) 9 9 10 src/ tableau.o: src/tableau.c11 src/ sudoku.o: src/sudoku.c12 src/ main.o: src/main.c10 src/ocean/ocean.o: src/ocean/ocean.h 11 src/ia/ia.o: src/ia/ia.h src/ocean/ocean.c 12 src/texte/texte.o: src/texte/texte.h src/ia/ia.c src/ocean/ocean.c 13 13 14 14 install: 15 15 cp $(EXEC) /usr/bin/ 16 16 cp man/batnav.1.gz /usr/share/man/man1 17 mkdir -p /usr/share/doc/ sudoku17 mkdir -p /usr/share/doc/batnav 18 18 cp AUTHORS CHANGELOG COPYING INSTALL README /usr/share/doc/batnav 19 19 -
src/ia/ia.c
r26 r27 6 6 * Raison de la derniÚre modification : ajout de ia_jouer 7 7 */ 8 9 #include <stdio.h> 8 10 9 11 #include <stdlib.h> … … 204 206 int decalage; 205 207 bool tir_trouve = false; 208 printf("%s - mode difficile\n", joueur->nickname); 206 209 /* Recherche de la case où effectuer le tir */ 207 210 do … … 335 338 ia_decalage_x(x, -1, contexte->orientation), 336 339 ia_decalage_y(y, -1, contexte->orientation), 337 TOUCHE))340 INCONNUE)) 338 341 { 339 342 /* La choisir */ … … 347 350 ia_decalage_x(x, 1, contexte->orientation), 348 351 ia_decalage_y(y, 1, contexte->orientation), 349 TOUCHE))352 INCONNUE)) 350 353 { 351 354 /* La choisir */ … … 357 360 else 358 361 { 362 printf("%s - changement d'orientation de recherche.\n", 363 joueur->nickname); 359 364 /* Changer d'orientation */ 360 contexte->orientation = ! contexte-> orientation;365 contexte->orientation = ! (contexte-> orientation); 361 366 /* Recommencer */ 362 367 } … … 372 377 contexte->bateau_trouve = false; 373 378 } 374 /* Sinon : */375 else 379 /* Sinon, si la case est touchée : */ 380 else if (ocean_statut_ennemi(*plateau, *joueur, tir_x, tir_y) == TOUCHE) 376 381 { 377 382 /* mettre bateau_x et bateau_y à la position du tir */ -
src/ocean/ocean.c
r26 r27 6 6 * Raison de la derniÚre modification : ajout des fonctions de statut 7 7 */ 8 9 #include <stdio.h> 8 10 9 11 #include <stdlib.h> … … 116 118 117 119 /* Si le bateau sur toute sa longueur ne sort pas de la grille : */ 118 if (((orientation == VERTICAL) && (y + categorie > =TAILLE_GRILLE)) ||119 ((orientation == HORIZONTAL) && (x + categorie > =TAILLE_GRILLE)))120 if (((orientation == VERTICAL) && (y + categorie > TAILLE_GRILLE)) || 121 ((orientation == HORIZONTAL) && (x + categorie > TAILLE_GRILLE))) 120 122 { 121 123 return false; … … 137 139 for(i=y; i<y+categorie; i++) 138 140 { 139 if (!ocean_case_est_libre(*plateau, joueur, i, y))141 if (!ocean_case_est_libre(*plateau, joueur, x, i)) 140 142 { 141 143 return false; … … 147 149 ocean_initialiser_bateau (&bateau); 148 150 bateau->categorie = categorie; 151 bateau->orientation = orientation; 149 152 /* L'ajouter à la liste des bateaux */ 150 153 plateau->liste_bateaux[joueur.id][plateau->nombre_bateaux[joueur.id]] = \ … … 232 235 ocean_T_Bateau* bateau; 233 236 234 for (i=x-1; i< =x+1; i++)235 { 236 for (j=y-1; j< =y+1; j++)237 for (i=x-1; i<x+2; i++) 238 { 239 for (j=y-1; j<y+2; j++) 237 240 { 238 241 /*si la case est dans le plateau*/ 239 if ((i<TAILLE_GRILLE) && (j<TAILLE_GRILLE) && (i> 0) && (j>0))242 if ((i<TAILLE_GRILLE) && (j<TAILLE_GRILLE) && (i>=0) && (j>=0)) 240 243 { 241 244 /*on verifie qu'elle est libre*/ -
src/ocean/test.c
r26 r27 76 76 /* Test d'une case non libre */ 77 77 ocean_initialiser_bateau(&bateau); 78 plateau.grille[0][5][5].bateau = bateau; 79 CU_ASSERT(ocean_case_est_libre(plateau, joueur0, 5, 5) == false); 78 bateau->categorie = PORTE_AVION; 79 bateau->orientation = HORIZONTAL; 80 (plateau.grille[0][0][0]).bateau = bateau; 81 (plateau.grille[0][1][0]).bateau = bateau; 82 (plateau.grille[0][2][0]).bateau = bateau; 83 (plateau.grille[0][3][0]).bateau = bateau; 84 CU_ASSERT(ocean_case_est_libre(plateau, joueur0, 0, 0) == false); 80 85 /* Test d'une case avec une voisine non libre */ 81 CU_ASSERT(ocean_case_est_libre(plateau, joueur0, 4, 5) == false); 86 CU_ASSERT(ocean_case_est_libre(plateau, joueur0, 0, 1) == false); 87 /* Test du bug : 88 * Destroyer en c3 v 89 * Destroyer en d4 v -> devrait être impossible */ 90 ocean_initialiser_joueur(&joueur0, 0, "J0", JOUEUR_LOCAL, NULL); 91 ocean_initialiser_joueur(&joueur1, 1, "J1", JOUEUR_LOCAL, NULL); 92 ocean_initialiser_plateau(&plateau, &joueur0, &joueur1); 93 ocean_initialiser_bateau(&bateau); 94 bateau->categorie = DESTROYER; 95 bateau->orientation = VERTICAL; 96 (plateau.grille[0][2][3]).bateau = bateau; 97 (plateau.grille[0][2][4]).bateau = bateau; 98 (plateau.grille[0][2][5]).bateau = bateau; 99 CU_ASSERT(ocean_case_est_libre(plateau, joueur0, 3, 4) == false); 82 100 } 83 101 … … 118 136 PORTE_AVION) == false); 119 137 /* Test de placer un bateau à un emplacement valide */ 120 CU_ASSERT(ocean_placer_bateau(&plateau, joueur0, 1, 1, HORIZONTAL,138 CU_ASSERT(ocean_placer_bateau(&plateau, joueur0, 0, 0, HORIZONTAL, 121 139 PORTE_AVION) == true); 122 ocean_statut(plateau, joueur0, 1, 1, &bateau);140 ocean_statut(plateau, joueur0, 0, 0, &bateau); 123 141 CU_ASSERT(bateau != NULL); 124 142 CU_ASSERT(bateau->categorie == PORTE_AVION); … … 127 145 CROISEUR) == false); 128 146 /* Test de placer un bateau à proximité d'un autre */ 129 CU_ASSERT(ocean_placer_bateau(&plateau, joueur0, 4, 2, VERTICAL,147 CU_ASSERT(ocean_placer_bateau(&plateau, joueur0, 0, 1, VERTICAL, 130 148 CROISEUR) == false); 149 /* Test du bug : 150 * Porte-avion en d0 h 151 * Destroyer en c3 v 152 * Destroyer en d4 v -> devrait être impossible */ 153 ocean_initialiser_joueur(&joueur0, 0, "J0", JOUEUR_LOCAL, NULL); 154 ocean_initialiser_joueur(&joueur1, 1, "J1", JOUEUR_LOCAL, NULL); 155 ocean_initialiser_plateau(&plateau, &joueur0, &joueur1); 156 /* Test de placer un bateau hors de la grille */ 157 CU_ASSERT(ocean_placer_bateau(&plateau, joueur0, 3, 0, HORIZONTAL, 158 PORTE_AVION) == true); 159 CU_ASSERT(ocean_placer_bateau(&plateau, joueur0, 2, 3, VERTICAL, 160 DESTROYER) == true); 161 CU_ASSERT(ocean_placer_bateau(&plateau, joueur0, 3, 4, VERTICAL, 162 DESTROYER) == false); 131 163 } 132 164 … … 290 322 ocean_initialiser_plateau(&plateau, &joueur0, &joueur1); 291 323 /* Tester le statut d'une case vide non tirée */ 292 CU_ASSERT(ocean_statut(plateau, joueur0, 0, 0, &bateau) == INCONNUE);324 CU_ASSERT(ocean_statut(plateau, joueur0, 9, 9, &bateau) == INCONNUE); 293 325 CU_ASSERT(bateau == NULL); 294 326 /* Tirer sur une case */ 295 ocean_tir(&plateau, &joueur1, 0, 0);327 ocean_tir(&plateau, &joueur1, 9, 9); 296 328 /* Tester le statut de la case vide tirée */ 297 CU_ASSERT(ocean_statut(plateau, joueur0, 0, 0, &bateau) == DANS_LEAU);329 CU_ASSERT(ocean_statut(plateau, joueur0, 9, 9, &bateau) == DANS_LEAU); 298 330 CU_ASSERT(bateau == NULL); 299 331 /* Placer un bateau */ 300 ocean_placer_bateau(&plateau, joueur0, 1, 1, VERTICAL, DESTROYER);332 ocean_placer_bateau(&plateau, joueur0, 2, 2, VERTICAL, DESTROYER); 301 333 /* Tester le statut d'une case du bateau*/ 302 CU_ASSERT(ocean_statut(plateau, joueur0, 1, 1, &bateau) == INCONNUE);334 CU_ASSERT(ocean_statut(plateau, joueur0, 2, 2, &bateau) == INCONNUE); 303 335 CU_ASSERT(bateau != NULL); 304 336 /* Tirer sur le bateau */ 305 ocean_tir(&plateau, &joueur1, 1, 1);337 ocean_tir(&plateau, &joueur1, 2, 2); 306 338 /* Tester le statut d'une case du bateau touchée */ 307 CU_ASSERT(ocean_statut(plateau, joueur0, 1, 1, &bateau) == TOUCHE);339 CU_ASSERT(ocean_statut(plateau, joueur0, 2, 2, &bateau) == TOUCHE); 308 340 CU_ASSERT(bateau != NULL); 309 341 /* Couler le bateau */ 310 ocean_tir(&plateau, &joueur1, 1, 2);342 ocean_tir(&plateau, &joueur1, 2, 3); 311 343 /* Tester le statut d'une case du bateau coulé */ 312 CU_ASSERT(ocean_statut(plateau, joueur0, 1, 2, &bateau) == COULE); 344 CU_ASSERT(ocean_statut(plateau, joueur0, 2, 3, &bateau) == COULE); 345 /* Test du statut pour un port-avion horizontal en 0,0 */ 346 ocean_initialiser_bateau(&bateau); 347 bateau->categorie = PORTE_AVION; 348 bateau->orientation = HORIZONTAL; 349 (plateau.grille[0][0][0]).bateau = bateau; 350 (plateau.grille[0][1][0]).bateau = bateau; 351 (plateau.grille[0][2][0]).bateau = bateau; 352 (plateau.grille[0][3][0]).bateau = bateau; 353 CU_ASSERT(ocean_statut(plateau, joueur0, 0, 0, &bateau) == INCONNUE); 354 CU_ASSERT(bateau != NULL); 313 355 } 314 356 -
src/texte/texte.c
r24 r27 9 9 #include <string.h> 10 10 #include <stdlib.h> 11 #include <time.h> 11 12 12 13 #include "../ocean/ocean.h" 14 #include "../ia/ia.h" 13 15 #include "texte.h" 14 #include "../ia/ia.h" 15 16 17 18 19 /* Nom de la fonction : void texte_initialiser_joueur_local(ocean_T_joueur *joueur) 16 17 /* Nom de la fonction : void texte_initialiser_joueur_local 20 18 * Initialise le joueur local 21 19 * ParamÚtre : ocean_T_joueur *joueur … … 24 22 void texte_initialiser_joueur_local(ocean_T_Joueur* joueur) 25 23 { 26 int id=2; 27 char nom[NB_MAX_LETTRES_NOM+1]; 28 int categorie=JOUEUR_LOCAL; 29 printf("Veuillez entrer votre nom :"); 30 scanf("%s", nom); 31 strcpy(joueur->nickname, nom); 32 while (id != 1 || id !=0) 33 { 34 printf("Voulez vous jouer en premier? 0 pour oui, 1 pour non\n"); 35 scanf("%1d", &id); 36 } 37 ocean_initialiser_joueur(joueur, id, nom, categorie, NULL); 38 } 39 40 41 /* Nom de la fonction : void texte_remplir_tableau_bataille_navale (ocean_T_Plateau plateau, ocean_T_Joueur joueur, char tableau[80][25]) 42 * rempli un tableau avec le plateau du joueur et ceui du joueur ennemi 24 int id=2; 25 char nom[NB_MAX_LETTRES_NOM+1]; 26 int categorie=JOUEUR_LOCAL; 27 printf("Veuillez entrer votre nom :"); 28 scanf("%s", nom); 29 strcpy(joueur->nickname, nom); 30 while (id != 1 && id !=0) 31 { 32 printf("Voulez vous jouer en premier ?\n"); 33 printf("0 : oui\n"); 34 printf("1 : non\n"); 35 scanf("%1d", &id); 36 } 37 ocean_initialiser_joueur(joueur, id, nom, categorie, NULL); 38 } 39 40 /*** Fonctions d'affichage ***/ 41 42 /* Nom de la fonction : void texte_initialiser_affichage 43 * Initialise le tableau d'affichage 44 * ParamÚtre : char affichage[AFF_LONG][AFF_HAUT] 45 * RÃŽle du paramÚtre : tableau d'affichage à initialiser 46 */ 47 void texte_initialiser_affichage(char affichage[AFF_LONG][AFF_HAUT]) 48 { 49 int i, j; 50 51 /* Initialiser le tableau à vide */ 52 for(i = 0; i < AFF_LONG; i++) 53 { 54 for(j = 0; j < AFF_HAUT; j++) 55 { 56 affichage[i][j] = ' '; 57 } 58 } 59 60 /* Définir les en-têtes des grilles */ 61 62 /* grille de gauche, ligne d'en haut */ 63 j=DEPART_LIGNE_J - 1; 64 for(i=DEPART_COLONNE_J; i<DEPART_COLONNE_J+TAILLE_GRILLE; i++) 65 { 66 affichage[i][j]=(char)((int)'a'+(i - DEPART_COLONNE_J)); 67 } 68 /*tableau de droite, ligne d'en haut*/ 69 for(i=DEPART_COLONNE_J_ENNEMI; i<DEPART_COLONNE_J_ENNEMI+TAILLE_GRILLE; i++) 70 { 71 affichage[i][j]=(char)((int)'a'+(i - DEPART_COLONNE_J_ENNEMI)); 72 } 73 74 i=DEPART_COLONNE_J-1; 75 /*tableau de gauche, colonne de gauche*/ 76 for(j=DEPART_LIGNE_J ;j<DEPART_LIGNE_J+TAILLE_GRILLE ;j++) 77 { 78 affichage[i][j]=(char)((int)'0'+(j-DEPART_LIGNE_J)); 79 } 80 81 i=DEPART_COLONNE_J_ENNEMI-1; 82 /*tableau de droite, colonne de gauche*/ 83 for(j=DEPART_LIGNE_J_ENNEMI ;j<DEPART_LIGNE_J_ENNEMI+TAILLE_GRILLE ;j++) 84 { 85 affichage[i][j]=(char)((int)'0'+(j - DEPART_LIGNE_J_ENNEMI)); 86 } 87 } 88 89 /* Nom de la fonction : void texte_afficher_plateau 90 * Actualise et affiche le plateau 43 91 * ParamÚtre : ocean_T_Plateau plateau 44 * RÃŽle du paramÚtre : plateau du joueur92 * RÃŽle du paramÚtre : plateau à afficher 45 93 * ParamÚtre : ocean_T_Joueur joueur 46 * RÃŽle du paramÚtre : plateau du joueur a afficher 47 * ParamÚtre : char tableau[80][25] 48 * RÃŽle du paramÚtre : tableau à remplir 49 */ 50 void texte_remplir_tableau_bataille_navale (ocean_T_Plateau plateau, ocean_T_Joueur joueur, char tableau[80][25]) 51 { 52 int x, y; 53 ocean_T_Etat etat; 54 ocean_T_Etat etat_ennemi; 55 ocean_T_Bateau* bateau; 56 57 for (x=0; x<TAILLE_GRILLE; x++) 58 { 59 for(y=0; y<TAILLE_GRILLE; y++) 60 { 61 etat = ocean_statut(plateau, joueur, x, y, &bateau); 62 if (etat==TOUCHE) 63 { 64 tableau[x+DEPART_LIGNE_J][y+DEPART_COLONNE_J]='x'; 65 } 66 if (etat==INCONNUE) 67 { 68 tableau[x+DEPART_LIGNE_J][y+DEPART_COLONNE_J]='.'; 69 } 70 if (etat==COULE) 71 { 72 tableau[x+DEPART_LIGNE_J][y+DEPART_COLONNE_J]='#'; 73 } 74 if (etat==DANS_LEAU) 75 { 76 tableau[x+DEPART_LIGNE_J][y+DEPART_COLONNE_J]='o'; 77 } 78 if (bateau != NULL) 79 { 80 tableau[x+DEPART_LIGNE_J][y+DEPART_COLONNE_J]='X'; 81 } 82 } 83 } 84 85 for (x=0; x<TAILLE_GRILLE; x++) 86 { 87 for(y=0; y<TAILLE_GRILLE; y++) 88 { 89 etat_ennemi=ocean_statut_ennemi(plateau, joueur, x, y); 90 if (etat==TOUCHE) 91 { 92 tableau[x+DEPART_LIGNE_J_ENNEMI][y+DEPART_COLONNE_J_ENNEMI]='x'; 93 } 94 if (etat==INCONNUE) 95 { 96 tableau[x+DEPART_LIGNE_J_ENNEMI][y+DEPART_COLONNE_J_ENNEMI]='.'; 97 } 98 if (etat==COULE) 99 { 100 tableau[x+DEPART_LIGNE_J_ENNEMI][y+DEPART_COLONNE_J_ENNEMI]='#'; 101 } 102 if (etat==DANS_LEAU) 103 { 104 tableau[x+DEPART_LIGNE_J_ENNEMI][y+DEPART_COLONNE_J_ENNEMI]='o'; 105 } 106 107 } 108 } 109 } 110 111 112 /* Nom de la fonction : void texte_afficher_plateau (tableau[80][25]) 113 * Affiche le plateau et le plateau ennemi 114 * ParamÚtre : char tableau[80][25] 115 * RÃŽle du paramÚtre : tableau à afficher 116 */ 117 void texte_afficher_plateau (char tableau[80][25]) 118 { 119 int i, j; 120 for (i=0; i<80; i++) 121 { 122 for (j=0; j<25; j++) 123 { 124 printf("%c", tableau[i][j]); 125 } 126 printf("\n"); 127 } 128 } 129 130 /* Nom de la fonction : void texte_placer_local(ocean_T_Plateau *plateau, ocean_T_Joueur joueur) 94 * RÃŽle du paramÚtre : joueur dont on veut afficher le jeu 95 * ParamÚtre : char affichage[AFF_LONG][AFF_HAUT] 96 * RÃŽle du paramÚtre : tableau d'affichage 97 */ 98 void texte_afficher_plateau (ocean_T_Plateau plateau, ocean_T_Joueur joueur, 99 char affichage[AFF_LONG][AFF_HAUT]) 100 { 101 int x, y; 102 ocean_T_Etat etat; 103 ocean_T_Bateau* bateau; 104 105 /* Actualiser l'affichage */ 106 107 for (x=0; x<TAILLE_GRILLE; x++) 108 { 109 for(y=0; y<TAILLE_GRILLE; y++) 110 { 111 etat = ocean_statut(plateau, joueur, x, y, &bateau); 112 if (etat==TOUCHE) 113 { 114 affichage[x+DEPART_COLONNE_J][y+DEPART_LIGNE_J]='x'; 115 } 116 else if (etat==COULE) 117 { 118 affichage[x+DEPART_COLONNE_J][y+DEPART_LIGNE_J]='#'; 119 } 120 else if (etat==DANS_LEAU) 121 { 122 affichage[x+DEPART_COLONNE_J][y+DEPART_LIGNE_J]='o'; 123 } 124 else if (bateau != NULL) 125 { 126 affichage[x+DEPART_COLONNE_J][y+DEPART_LIGNE_J]='X'; 127 } 128 else 129 { 130 affichage[x+DEPART_COLONNE_J][y+DEPART_LIGNE_J]='.'; 131 } 132 } 133 } 134 135 for (x=0; x<TAILLE_GRILLE; x++) 136 { 137 for(y=0; y<TAILLE_GRILLE; y++) 138 { 139 etat=ocean_statut_ennemi(plateau, joueur, x, y); 140 if (etat==TOUCHE) 141 { 142 affichage[x+DEPART_COLONNE_J_ENNEMI][y+DEPART_LIGNE_J_ENNEMI]='x'; 143 } 144 else if (etat==COULE) 145 { 146 affichage[x+DEPART_COLONNE_J_ENNEMI][y+DEPART_LIGNE_J_ENNEMI]='#'; 147 } 148 else if (etat==DANS_LEAU) 149 { 150 affichage[x+DEPART_COLONNE_J_ENNEMI][y+DEPART_LIGNE_J_ENNEMI]='o'; 151 } 152 else 153 { 154 affichage[x+DEPART_COLONNE_J_ENNEMI][y+DEPART_LIGNE_J_ENNEMI]='.'; 155 } 156 } 157 } 158 159 /* Afficher */ 160 161 for (y=0; y<AFF_HAUT; y++) 162 { 163 for (x=0; x<AFF_LONG; x++) 164 { 165 printf("%c", affichage[x][y]); 166 } 167 printf("\n"); 168 } 169 170 /* Afficher les scores */ 171 printf("Scores : %d\t\t\t%d\n", joueur.score, \ 172 plateau.joueur[ocean_id_ennemi(joueur)]->score); 173 } 174 175 /*** Fonctions de jeu ***/ 176 /* Nom de la fonction : void texte_placer_local 131 177 * Place les bateaux sur la grille 132 178 * ParamÚtre : Plateau *plateau … … 134 180 * ParamÚtre : Joueur joueur 135 181 * RÃŽle du paramÚtre : joueur qui place les bateaux 136 */ 137 void texte_placer_local(ocean_T_Plateau *plateau, ocean_T_Joueur joueur) 182 * ParamÚtre : char affichage[AFF_LONG][AFF_HAUT] 183 * RÃŽle du paramÚtre : tableau d'affichage 184 */ 185 void texte_placer_local(ocean_T_Plateau *plateau, ocean_T_Joueur joueur, 186 char affichage[AFF_LONG][AFF_HAUT]) 138 187 { 139 int x, y; 140 char a; 141 int b; 142 ocean_T_BateauCategorie liste_categories[NB_CATEGORIES_BATEAUX] = CATEGORIES_BATEAUX; 143 ocean_T_BateauCategorie categorie_en_cours; 144 int i, j; 145 int nombre; 146 int orientation; 147 148 for(i=0; i<NB_CATEGORIES_BATEAUX; i++) 149 { 150 categorie_en_cours = liste_categories[i]; 151 /* Tu peux ensuite utiliser la categorie de bateau ma_categorie */ 152 /* Si tu veux savoir le nombre de bateaux à placer dans cette catégorie : */ 153 nombre = ocean_nb_bateau(categorie_en_cours); 154 for (j=0; j<nombre; j++) 155 { 156 texte_afficher_plateau (tableau); 157 printf("Placez "); 158 if (categorie_en_cours==PORTE_AVION) 159 { 160 printf ("le porte avion numéro "); 161 } 162 if (categorie_en_cours==CROISEUR) 163 { 164 printf ("le croiseur numéro "); 165 } 166 if (categorie_en_cours==DESTROYER) 167 { 168 printf ("le destroyez numéro "); 169 } 170 if (categorie_en_cours==VEDETTE) 171 { 172 printf ("la vedette numéro "); 173 } 174 printf("%d : coordonnées et orientation : 0 pour horizontal ou 1 vertical\n", j); 175 do 176 { 177 printf("Attention, il faut entrer des coordonnées valides.\n"); 178 scanf("%c %d", &a, &b); 179 x=(int)a - (int)'a'; 180 y=b-1; 181 scanf("%d", &orientation); 182 183 }while (! ocean_placer(plateau, joueur, x, y, orientation, categorie_en_cours)); 184 } 185 } 186 } 187 188 void texte_embellir_plateau(char tableau[80][25]) 189 { 190 int i, j; 191 192 /*tableau de gauche, ligne d'en haut*/ 193 i=DEPART_LIGNE_J -1; 194 for(j=DEPART_COLONNE_J; j<DEPART_COLONNE_J+TAILLE_GRILLE; j++) 195 { 196 tableau[i][j]=(char)((int)'A'+j); 197 } 198 /*tableau de droite, ligne d'en haut*/ 199 for(j=DEPART_COLONNE_J_ENNEMI; j<DEPART_COLONNE_J_ENNEMI+TAILLE_GRILLE; j++) 200 { 201 tableau[i][j]=(char)((int)'A'+j); 202 } 203 204 j=DEPART_COLONNE_J-1; 205 /*tableau de gauche, colonne de gauche*/ 206 for(i=DEPART_LIGNE_J ;i<DEPART_LIGNE_J+TAILLE_GRILLE ;i++) 207 { 208 tableau[i][j]=(char)((int)'0'+i); 209 } 210 211 j=DEPART_COLONNE_J_ENNEMI-1; 212 /*tableau de droite, colonne de gauche*/ 213 for(i=DEPART_LIGNE_J_ENNEMI ;i<DEPART_LIGNE_J_ENNEMI+TAILLE_GRILLE ;i++) 214 { 215 tableau[i][j]=(char)((int)'0'+i); 216 } 217 } 218 219 220 /* Nom de la fonction : void texte_placer_local(ocean_T_Plateau *plateau, ocean_T_Joueur joueur) 188 ocean_T_BateauCategorie liste_categories[NB_CATEGORIES_BATEAUX] = \ 189 CATEGORIES_BATEAUX ; 190 int i; 191 /* Pour chaque categorie de bateau : */ 192 for(i = 0; i < NB_CATEGORIES_BATEAUX; i++) 193 { 194 ocean_T_BateauCategorie categorie = liste_categories[i]; 195 int nombre_bateaux = ocean_nb_bateau(categorie), j; 196 /* Pour le nombre de bateau à placer dans cette catégorie : */ 197 for(j = 0; j < nombre_bateaux; j++) 198 { 199 int x, y; 200 bool orientation; 201 /* Tant que le bateau n'est pas placé : */ 202 do 203 { 204 char a; 205 int choix_orientation; 206 /* Afficher la grille */ 207 texte_afficher_plateau(*plateau, joueur, affichage); 208 /* Choix d'une position dans la grille : */ 209 printf("Placez "); 210 if (categorie==PORTE_AVION) 211 { 212 printf ("le porte avion numéro "); 213 } 214 if (
