2023-01-06 00:55:08 +01:00
# include <stdio.h>
# include <stdlib.h>
# include <time.h>
int verif2 ( char tab [ ] [ 10 ] ) {
int v = 0 ;
int i ;
int j ;
for ( i = 0 ; i < 10 ; i + + ) {
for ( j = 0 ; j < 10 ; j + + ) {
2023-01-06 16:49:42 +01:00
if ( tab [ i ] [ j ] ! = ' ' ) { /*On compte le nombre de case qui ne sont pas des espaces*/
2023-01-06 00:55:08 +01:00
v + + ;
}
}
2023-01-06 16:49:42 +01:00
} if ( v = = 17 ) { /*Si il est égal à 17 on return 1*/
2023-01-06 00:55:08 +01:00
return 1 ;
} return 0 ;
}
2023-01-06 16:49:42 +01:00
void ajoutNavireAleatoire2 ( char tab [ ] [ 10 ] , char b , int t ) { /*Fonction permettant d'ajouter les navires sur le plateau de façon aléatoire*/
2023-01-06 00:55:08 +01:00
srand ( time ( NULL ) ) ;
2023-01-06 16:49:42 +01:00
int o = ( rand ( ) % 2 ) ; /*On définit l'orientation de façon aléatoire*/
2023-01-06 00:55:08 +01:00
int x ;
int y ;
int i ;
int j ;
int v = 0 ;
int w = 0 ;
if ( o = = 0 ) {
while ( v = = 0 ) {
srand ( time ( NULL ) ) ;
w = 0 ;
2023-01-06 16:49:42 +01:00
x = ( rand ( ) % ( 10 - t ) ) ; /*On définit x et y de manière aléatoire*/
2023-01-06 00:55:08 +01:00
y = ( rand ( ) % 10 ) ;
for ( i = x ; i < x + t ; i + + ) {
2023-01-06 16:49:42 +01:00
if ( tab [ i ] [ y ] ! = ' ' ) { /*On vérifie si les cases sont vide*/
2023-01-06 00:55:08 +01:00
w = 1 ;
}
} if ( w = = 0 ) {
for ( i = x ; i < x + t ; i + + ) {
tab [ i ] [ y ] = b ;
v = 1 ;
}
}
}
} else {
while ( v = = 0 ) {
srand ( time ( NULL ) ) ;
w = 0 ;
2023-01-06 16:49:42 +01:00
x = ( rand ( ) % 10 ) ; /*On définit x et y de manière aléatoire*/
2023-01-06 00:55:08 +01:00
y = ( rand ( ) % ( 10 - t ) ) ;
for ( j = y ; j < y + t ; j + + ) {
2023-01-06 16:49:42 +01:00
if ( tab [ x ] [ j ] ! = ' ' ) { /*On vérifie si les cases sont vide*/
2023-01-06 00:55:08 +01:00
w = 1 ;
}
} if ( w = = 0 ) {
for ( j = y ; j < y + t ; j + + ) {
tab [ x ] [ j ] = b ;
v = 1 ;
}
}
}
}
}
2023-01-06 16:49:42 +01:00
void affiche2 ( char t [ ] [ 10 ] ) { /*Affichage d'un tableau seul*/
2023-01-06 00:55:08 +01:00
int i ;
int j ;
char c = ' A ' ;
2023-01-06 16:49:42 +01:00
printf ( " _|0|1|2|3|4|5|6|7|8|9| \n " ) ; /*Permet d'afficher la colonne du tableau*/
2023-01-06 00:55:08 +01:00
for ( i = 0 ; i < 10 ; i + + ) {
printf ( " %c| " , c ) ;
for ( j = 0 ; j < 10 ; j + + ) {
printf ( " %c| " , t [ i ] [ j ] ) ;
} c + + ;
putchar ( ' \n ' ) ;
} putchar ( ' \n ' ) ;
}
2023-01-06 16:49:42 +01:00
void afficheduo2 ( char t [ ] [ 10 ] , char p [ ] [ 10 ] ) { /*Affichage des deux tables cote a cote */
2023-01-06 00:55:08 +01:00
int i ;
int j ;
int h ;
char c = ' A ' ;
2023-01-06 16:49:42 +01:00
printf ( " _|0|1|2|3|4|5|6|7|8|9| _|0|1|2|3|4|5|6|7|8|9| \n " ) ; /*Permet d'afficher les colonnes des deux tableaux*/
2023-01-06 00:55:08 +01:00
for ( i = 0 ; i < 10 ; i + + ) {
printf ( " %c| " , c ) ;
for ( j = 0 ; j < 10 ; j + + ) {
if ( t [ i ] [ j ] ! = ' x ' & & t [ i ] [ j ] ! = ' . ' ) {
2023-01-06 16:49:42 +01:00
printf ( " | " ) ; /*Permet d'afficher les barres : | nécéssaire aux colonnes */
2023-01-06 00:55:08 +01:00
} else {
printf ( " %c| " , t [ i ] [ j ] ) ;
}
} printf ( " %c| " , c ) ;
for ( h = 0 ; h < 10 ; h + + ) {
if ( p [ i ] [ h ] ! = ' x ' & & p [ i ] [ h ] ! = ' . ' ) {
printf ( " | " ) ;
} else {
printf ( " %c| " , p [ i ] [ h ] ) ;
} } c + + ;
putchar ( ' \n ' ) ;
} putchar ( ' \n ' ) ;
}
2023-01-06 16:49:42 +01:00
void initPlateau2 ( char plat [ ] [ 10 ] ) { /*Création des plateaux avec le choix des emplacments des plateaux*/
2023-01-06 00:55:08 +01:00
char c ;
char o ;
int a ;
char cord ;
int coord ;
int i = 0 ;
int j = 0 ;
int v = 0 ;
int w = 0 ;
2023-01-06 16:49:42 +01:00
printf ( " Voulez vous placez vos navires à la (M)ain ou de manière (A)léatoire ? \n \n " ) ; /*Demande de la façon dont le joueur veut placer les navires*/
2023-01-06 16:27:16 +01:00
scanf ( " %c " , & c ) ;
2023-01-06 16:49:42 +01:00
while ( c ! = ' M ' & & c ! = ' A ' ) { /*Tant que la réponse n'est pas M ou A*/
scanf ( " %c " , & c ) ; /*ALors on attend*/
} if ( c = = ' A ' ) { /*Si la réponse est A alors*/
2023-01-06 00:55:08 +01:00
for ( i = 0 ; i < 10 ; i + + ) {
for ( j = 0 ; j < 10 ; j + + ) {
plat [ i ] [ j ] = ' ' ;
2023-01-06 16:49:42 +01:00
} /*On lance le programme "ajoutNavireAleatoire2"*/
2023-01-06 16:27:16 +01:00
} ajoutNavireAleatoire2 ( plat , ' A ' , 5 ) ;
2023-01-06 00:55:08 +01:00
ajoutNavireAleatoire2 ( plat , ' C ' , 4 ) ;
ajoutNavireAleatoire2 ( plat , ' S ' , 3 ) ;
ajoutNavireAleatoire2 ( plat , ' M ' , 3 ) ;
ajoutNavireAleatoire2 ( plat , ' T ' , 2 ) ;
2023-01-06 16:49:42 +01:00
printf ( " Les navires ont été placé de manière aléatoire \n \n " ) ; /*On annonce que les navires sont placés*/
} else { /*Si la réponse n'est pas A mais M alors*/
2023-01-06 00:55:08 +01:00
printf ( " Vous avez choisis de placer vos navires. \n \n " ) ;
printf ( " Veuillez renseignez l'orientation du navire ((h)orizontal ou (v)ertical) ainsi que la coordonnée la plus au nord-ouest de la manière suivante: h,A2 \n \n " ) ;
for ( i = 0 ; i < 10 ; i + + ) {
for ( j = 0 ; j < 10 ; j + + ) {
plat [ i ] [ j ] = ' ' ;
}
2023-01-06 16:49:42 +01:00
} printf ( " Placez votre Porte-(A)vion (longueur 5) \n \n " ) ; /*On demande au joueur de placer le Porte-Avion*/
while ( v = = 0 ) {
2023-01-06 00:55:08 +01:00
while ( ( a = getchar ( ) ) ! = ' \n ' & & c ! = EOF ) { }
affiche2 ( plat ) ;
w = 0 ;
2023-01-06 16:49:42 +01:00
scanf ( " %c,%c%d " , & o , & cord , & coord ) ; /*On récupère l'orientation, la ligne puis la colone*/
if ( o = = ' h ' ) { /*Si l'orientation est horizontale*/
2023-01-06 16:27:16 +01:00
i = cord - ' A ' ;
2023-01-06 16:49:42 +01:00
if ( i > 10 | | i < 0 ) { /*Si la ligne choisi n'est pas entre A et I*/
printf ( " Navire hors limite \n \n " ) ; /*Alors on dit au joueur que le navire est hors limite*/
} else { /*Sinon on regarde la colone*/
2023-01-06 16:27:16 +01:00
j = coord ;
2023-01-06 16:49:42 +01:00
if ( j + 5 > 10 | | j < 0 ) { /*Et si la colone choisi est 5 ou plus*/
printf ( " Navire hors limite \n \n " ) ; /*Alors on dit au joueur que le navire est hors limite*/
2023-01-06 00:55:08 +01:00
} else {
2023-01-06 16:49:42 +01:00
for ( j = coord ; j < coord + 5 ; j + + ) { /*On regarde si les 5 cases après celle choisi sont libres*/
2023-01-06 00:55:08 +01:00
if ( plat [ i ] [ j ] ! = ' ' ) {
w = 1 ;
}
} if ( w = = 0 ) {
for ( j = coord ; j < coord + 5 ; j + + ) {
2023-01-06 16:27:16 +01:00
plat [ i ] [ j ] = ' A ' ;
2023-01-06 16:49:42 +01:00
v = 1 ; /*Si elles sont libres alors on enregistre les coordonées*/
2023-01-06 00:55:08 +01:00
}
} else {
2023-01-06 16:49:42 +01:00
printf ( " Navire empiète sur un autre \n \n " ) ; /*Sinon on annonce que le bateau empiète sur un autre bateau*/
2023-01-06 00:55:08 +01:00
}
}
2023-01-06 16:27:16 +01:00
}
} else {
2023-01-06 16:49:42 +01:00
if ( o = = ' v ' ) { /*Si l'orientation est Verticale*/
2023-01-06 16:27:16 +01:00
i = cord - ' A ' ;
2023-01-06 16:49:42 +01:00
if ( i + 5 > 10 | | i < 0 ) { /*Si la ligne choisi ne permet pas au bateau de rentrer complétement sur le plateau*/
printf ( " Navire hors limite \n \n " ) ; /*Alors on dit au joueur que le navire est hors limite*/
2023-01-06 00:55:08 +01:00
} else {
j = coord ;
2023-01-06 16:49:42 +01:00
if ( j > 10 | | j < 0 ) { /*Si la colonne choisi ne permet pas au bateau de rentrer complétement sur le plateau*/
printf ( " Navire hors limite \n \n " ) ; /*Alors on dit au joueur que le navire est hors limite*/
2023-01-06 00:55:08 +01:00
} else {
for ( i = cord - ' A ' ; i < cord - ' A ' + 5 ; i + + ) {
if ( plat [ i ] [ j ] ! = ' ' ) {
w = 1 ;
}
} if ( w = = 0 ) {
for ( i = cord - ' A ' ; i < cord - ' A ' + 5 ; i + + ) {
plat [ i ] [ j ] = ' A ' ;
v = 1 ;
2023-01-06 16:49:42 +01:00
} /*Si elles sont libres alors on enregistre les coordonées*/
2023-01-06 00:55:08 +01:00
} else {
2023-01-06 16:49:42 +01:00
printf ( " Navire empiète sur un autre \n \n " ) ; /*Sinon on annonce que le bateau empiète sur un autre bateau*/
2023-01-06 00:55:08 +01:00
}
}
}
} else {
2023-01-06 16:49:42 +01:00
printf ( " Navire hors limite \n \n " ) ; /*Alors on dit au joueur que le navire est hors limite*/
2023-01-06 00:55:08 +01:00
}
}
2023-01-06 16:49:42 +01:00
} printf ( " Placez votre (C)roiseur (longueur 4) \n \n " ) ; /*On demande au joueur de placer le Croiseur*/
2023-01-06 00:55:08 +01:00
v = 0 ;
while ( v = = 0 ) {
while ( ( a = getchar ( ) ) ! = ' \n ' & & c ! = EOF ) { }
affiche2 ( plat ) ;
w = 0 ;
scanf ( " %c,%c%d " , & o , & cord , & coord ) ;
2023-01-06 16:49:42 +01:00
if ( o = = ' h ' ) { /*Si l'orientation est horizontale*/
2023-01-06 00:55:08 +01:00
i = cord - ' A ' ;
2023-01-06 16:49:42 +01:00
if ( i > 10 | | i < 0 ) { /*Si la ligne choisi n'est pas entre A et I*/
printf ( " Navire hors limite \n \n " ) ; /*Alors on dit au joueur que le navire est hors limite*/
} else { /*Sinon on regarde la colone*/
2023-01-06 00:55:08 +01:00
j = coord ;
2023-01-06 16:49:42 +01:00
if ( j + 4 > 10 | | j < 0 ) { /*Et si la colone choisi est 8 ou plus*/
printf ( " Navire hors limite \n \n " ) ; /*Alors on dit au joueur que le navire est hors limite*/
2023-01-06 00:55:08 +01:00
} else {
for ( j = coord ; j < coord + 4 ; j + + ) {
if ( plat [ i ] [ j ] ! = ' ' ) {
2023-01-06 16:49:42 +01:00
w = 1 ; /*Si elles sont libres alors on enregistre les coordonées*/
2023-01-06 00:55:08 +01:00
}
} if ( w = = 0 ) {
for ( j = coord ; j < coord + 4 ; j + + ) {
plat [ i ] [ j ] = ' C ' ;
v = 1 ;
2023-01-06 16:49:42 +01:00
} /*Si elles sont libres alors on enregistre les coordonées*/
2023-01-06 00:55:08 +01:00
} else {
2023-01-06 16:49:42 +01:00
printf ( " Navire empiète sur un autre \n \n " ) ; /*Sinon on annonce que le bateau empiète sur un autre bateau*/
2023-01-06 00:55:08 +01:00
}
}
}
} else {
2023-01-06 16:49:42 +01:00
if ( o = = ' v ' ) { /*Si l'orientation est Verticale*/
2023-01-06 16:27:16 +01:00
i = cord - ' A ' ;
2023-01-06 16:49:42 +01:00
if ( i + 4 > 10 | | i < 0 ) { /*Si la ligne choisi ne permet pas au bateau de rentrer complétement sur le plateau*/
printf ( " Navire hors limite \n \n " ) ; /*Alors on dit au joueur que le navire est hors limite*/
2023-01-06 00:55:08 +01:00
} else {
j = coord ;
2023-01-06 16:49:42 +01:00
if ( j > 10 | | j < 0 ) { /*Si la colonne choisi ne permet pas au bateau de rentrer complétement sur le plateau*/
printf ( " Navire hors limite \n \n " ) ; /*Alors on dit au joueur que le navire est hors limite*/
2023-01-06 00:55:08 +01:00
} else {
for ( i = cord - ' A ' ; i < cord - ' A ' + 4 ; i + + ) {
if ( plat [ i ] [ j ] ! = ' ' ) {
w = 1 ;
}
} if ( w = = 0 ) {
for ( i = cord - ' A ' ; i < cord - ' A ' + 4 ; i + + ) {
plat [ i ] [ j ] = ' C ' ;
2023-01-06 16:49:42 +01:00
v = 1 ; /*Si elles sont libres alors on enregistre les coordonées*/
2023-01-06 00:55:08 +01:00
}
} else {
2023-01-06 16:49:42 +01:00
printf ( " Navire empiète sur un autre \n \n " ) ; /*Sinon on annonce que le bateau empiète sur un autre bateau*/
2023-01-06 00:55:08 +01:00
}
}
}
} else {
2023-01-06 16:49:42 +01:00
printf ( " Navire hors limite \n \n " ) ; /*Alors on dit au joueur que le navire est hors limite*/
2023-01-06 00:55:08 +01:00
}
}
2023-01-06 16:49:42 +01:00
} printf ( " Placez votre (S)ous-marin (longueur 3) \n \n " ) ; /*On demande au joueur de placer le Sous-marin*/
2023-01-06 00:55:08 +01:00
v = 0 ;
while ( v = = 0 ) {
while ( ( a = getchar ( ) ) ! = ' \n ' & & c ! = EOF ) { }
affiche2 ( plat ) ;
w = 0 ;
scanf ( " %c,%c%d " , & o , & cord , & coord ) ;
2023-01-06 16:49:42 +01:00
if ( o = = ' h ' ) { /*Si l'orientation est horizontale*/
2023-01-06 00:55:08 +01:00
i = cord - ' A ' ;
2023-01-06 16:49:42 +01:00
if ( i > 10 | | i < 0 ) { /*Si la ligne choisi n'est pas entre A et I*/
printf ( " Navire hors limite \n \n " ) ; /*Alors on dit au joueur que le navire est hors limite*/
2023-01-06 00:55:08 +01:00
} else {
2023-01-06 16:49:42 +01:00
j = coord ; /*Sinon on regarde la colone*/
if ( j + 3 > 10 | | j < 0 ) { /*Et si la colone choisi est 7 ou plus*/
2023-01-06 16:27:16 +01:00
2023-01-06 16:49:42 +01:00
printf ( " Navire hors limite \n \n " ) ; /*Alors on dit au joueur que le navire est hors limite*/
2023-01-06 00:55:08 +01:00
} else {
for ( j = coord ; j < coord + 3 ; j + + ) {
if ( plat [ i ] [ j ] ! = ' ' ) {
w = 1 ;
}
} if ( w = = 0 ) {
for ( j = coord ; j < coord + 3 ; j + + ) {
plat [ i ] [ j ] = ' S ' ;
v = 1 ;
2023-01-06 16:49:42 +01:00
} /*Si elles sont libres alors on enregistre les coordonées*/
2023-01-06 00:55:08 +01:00
} else {
2023-01-06 16:49:42 +01:00
printf ( " Navire empiète sur un autre \n \n " ) ; /*Sinon on annonce que le bateau empiète sur un autre bateau*/
2023-01-06 00:55:08 +01:00
}
}
}
} else {
2023-01-06 16:49:42 +01:00
if ( o = = ' v ' ) { /*Si l'orientation est Verticale*/
2023-01-06 00:55:08 +01:00
i = cord - ' A ' ;
2023-01-06 16:49:42 +01:00
if ( i + 3 > 10 | | i < 0 ) { /*Si la ligne choisi ne permet pas au bateau de rentrer complétement sur le plateau*/
printf ( " Navire hors limite \n \n " ) ; /*Alors on dit au joueur que le navire est hors limite*/
2023-01-06 00:55:08 +01:00
} else {
j = coord ;
2023-01-06 16:49:42 +01:00
if ( j > 10 | | j < 0 ) { /*Si la colonne choisi ne permet pas au bateau de rentrer complétement sur le plateau*/
printf ( " Navire hors limite \n \n " ) ; /*Alors on dit au joueur que le navire est hors limite*/
2023-01-06 00:55:08 +01:00
} else {
for ( i = cord - ' A ' ; i < cord - ' A ' + 3 ; i + + ) {
if ( plat [ i ] [ j ] ! = ' ' ) {
w = 1 ;
}
} if ( w = = 0 ) {
for ( i = cord - ' A ' ; i < cord - ' A ' + 3 ; i + + ) {
plat [ i ] [ j ] = ' S ' ;
v = 1 ;
2023-01-06 16:49:42 +01:00
} /*Si elles sont libres alors on enregistre les coordonées*/
2023-01-06 00:55:08 +01:00
} else {
2023-01-06 16:49:42 +01:00
printf ( " Navire empiète sur un autre \n \n " ) ; /*Sinon on annonce que le bateau empiète sur un autre bateau*/
2023-01-06 00:55:08 +01:00
}
}
}
} else {
2023-01-06 16:49:42 +01:00
printf ( " Navire hors limite \n \n " ) ; /*Alors on dit au joueur que le navire est hors limite*/
2023-01-06 00:55:08 +01:00
}
}
2023-01-06 16:49:42 +01:00
} printf ( " Placez votre (M)arin-sous (longueur 3) \n \n " ) ; /*On demande au joueur de placer le Marin-Sous*/
2023-01-06 00:55:08 +01:00
v = 0 ;
while ( v = = 0 ) {
while ( ( a = getchar ( ) ) ! = ' \n ' & & c ! = EOF ) { }
affiche2 ( plat ) ;
2023-01-06 16:27:16 +01:00
w = 0 ;
2023-01-06 00:55:08 +01:00
scanf ( " %c,%c%d " , & o , & cord , & coord ) ;
2023-01-06 16:49:42 +01:00
if ( o = = ' h ' ) { /*Si l'orientation est horizontale*/
2023-01-06 00:55:08 +01:00
i = cord - ' A ' ;
2023-01-06 16:49:42 +01:00
if ( i > 10 | | i < 0 ) { /*Si la ligne choisi n'est pas entre A et I*/
printf ( " Navire hors limite \n \n " ) ; /*Alors on dit au joueur que le navire est hors limite*/
2023-01-06 00:55:08 +01:00
} else {
2023-01-06 16:49:42 +01:00
j = coord ; /*Sinon on regarde la colone*/
if ( j + 3 > 10 | | j < 0 ) { /*Et si la colone choisi est 7 ou plus*/
printf ( " Navire hors limite \n \n " ) ; /*Alors on dit au joueur que le navire est hors limite*/
2023-01-06 00:55:08 +01:00
} else {
for ( j = coord ; j < coord + 3 ; j + + ) {
if ( plat [ i ] [ j ] ! = ' ' ) {
w = 1 ;
}
} if ( w = = 0 ) {
for ( j = coord ; j < coord + 3 ; j + + ) {
plat [ i ] [ j ] = ' M ' ;
v = 1 ;
2023-01-06 16:49:42 +01:00
} /*Si elles sont libres alors on enregistre les coordonées*/
2023-01-06 00:55:08 +01:00
} else {
2023-01-06 16:49:42 +01:00
printf ( " Navire empiète sur un autre \n \n " ) ; /*Sinon on annonce que le bateau empiète sur un autre bateau*/
2023-01-06 00:55:08 +01:00
}
}
}
} else {
2023-01-06 16:49:42 +01:00
if ( o = = ' v ' ) { /*Si l'orientation est Verticale*/
2023-01-06 00:55:08 +01:00
i = cord - ' A ' ;
2023-01-06 16:49:42 +01:00
if ( i + 3 > 10 | | i < 0 ) { /*Si la ligne choisi ne permet pas au bateau de rentrer complétement sur le plateau*/
printf ( " Navire hors limite \n \n " ) ; /*Alors on dit au joueur que le navire est hors limite*/
2023-01-06 00:55:08 +01:00
} else {
j = coord ;
2023-01-06 16:49:42 +01:00
if ( j > 10 | | j < 0 ) { /*Si la colonne choisi ne permet pas au bateau de rentrer complétement sur le plateau*/
printf ( " Navire hors limite \n \n " ) ; /*Alors on dit au joueur que le navire est hors limite*/
2023-01-06 00:55:08 +01:00
} else {
for ( i = cord - ' A ' ; i < cord - ' A ' + 3 ; i + + ) {
if ( plat [ i ] [ j ] ! = ' ' ) {
w = 1 ;
}
} if ( w = = 0 ) {
for ( i = cord - ' A ' ; i < cord - ' A ' + 3 ; i + + ) {
plat [ i ] [ j ] = ' M ' ;
v = 1 ;
2023-01-06 16:49:42 +01:00
} /*Si elles sont libres alors on enregistre les coordonées*/
2023-01-06 00:55:08 +01:00
} else {
2023-01-06 16:49:42 +01:00
printf ( " Navire empiète sur un autre \n \n " ) ; /*Sinon on annonce que le bateau empiète sur un autre bateau*/
2023-01-06 00:55:08 +01:00
}
}
}
} else {
2023-01-06 16:49:42 +01:00
printf ( " Navire hors limite \n \n " ) ; /*Alors on dit au joueur que le navire est hors limite*/
2023-01-06 00:55:08 +01:00
}
}
2023-01-06 16:49:42 +01:00
} printf ( " Placez votre (T)orpilleur (longueur 2) \n \n " ) ; /*On demande au joueur de placer le Torpilleur*/
2023-01-06 00:55:08 +01:00
v = 0 ;
while ( v = = 0 ) {
while ( ( a = getchar ( ) ) ! = ' \n ' & & c ! = EOF ) { }
affiche2 ( plat ) ;
w = 0 ;
scanf ( " %c,%c%d " , & o , & cord , & coord ) ;
2023-01-06 16:49:42 +01:00
if ( o = = ' h ' ) { /*Si l'orientation est horizontale*/
2023-01-06 00:55:08 +01:00
i = cord - ' A ' ;
2023-01-06 16:49:42 +01:00
if ( i > 10 | | i < 0 ) { /*Si la ligne choisi n'est pas entre A et I*/
printf ( " Navire hors limite \n \n " ) ; /*Alors on dit au joueur que le navire est hors limite*/
2023-01-06 00:55:08 +01:00
} else {
2023-01-06 16:49:42 +01:00
j = coord ; /*Sinon on regarde la colone*/
if ( j + 2 > 10 | | j < 0 ) { /*Et si la colone choisi est 8 ou plus*/
printf ( " Navire hors limite \n \n " ) ; /*Alors on dit au joueur que le navire est hors limite*/
2023-01-06 00:55:08 +01:00
} else {
for ( j = coord ; j < coord + 2 ; j + + ) {
if ( plat [ i ] [ j ] ! = ' ' ) {
w = 1 ;
}
} if ( w = = 0 ) {
for ( j = coord ; j < coord + 2 ; j + + ) {
plat [ i ] [ j ] = ' T ' ;
v = 1 ;
2023-01-06 16:49:42 +01:00
} /*Si elles sont libres alors on enregistre les coordonées*/
2023-01-06 00:55:08 +01:00
} else {
2023-01-06 16:49:42 +01:00
printf ( " Navire empiète sur un autre \n \n " ) ; /*Sinon on annonce que le bateau empiète sur un autre bateau*/
2023-01-06 00:55:08 +01:00
}
}
}
} else {
2023-01-06 16:49:42 +01:00
if ( o = = ' v ' ) { /*Si l'orientation est Verticale*/
2023-01-06 00:55:08 +01:00
i = cord - ' A ' ;
if ( i + 2 > 10 | | i < 0 ) {
2023-01-06 16:49:42 +01:00
printf ( " Navire hors limite \n \n " ) ; /*Alors on dit au joueur que le navire est hors limite*/
2023-01-06 00:55:08 +01:00
} else {
j = coord ;
2023-01-06 16:49:42 +01:00
if ( j > 10 | | j < 0 ) { /*Si la ligne choisi ne permet pas au bateau de rentrer complétement sur le plateau*/
printf ( " Navire hors limite \n \n " ) ; /*Alors on dit au joueur que le navire est hors limite*/
2023-01-06 00:55:08 +01:00
} else {
for ( i = cord - ' A ' ; i < cord - ' A ' + 2 ; i + + ) {
if ( plat [ i ] [ j ] ! = ' ' ) {
w = 1 ;
}
} if ( w = = 0 ) {
for ( i = cord - ' A ' ; i < cord - ' A ' + 2 ; i + + ) {
plat [ i ] [ j ] = ' T ' ;
v = 1 ;
2023-01-06 16:49:42 +01:00
} /*Si elles sont libres alors on enregistre les coordonées*/
2023-01-06 00:55:08 +01:00
} else {
2023-01-06 16:49:42 +01:00
printf ( " Navire empiète sur un autre \n \n " ) ; /*Sinon on annonce que le bateau empiète sur un autre bateau*/
2023-01-06 00:55:08 +01:00
}
}
}
} else {
2023-01-06 16:49:42 +01:00
printf ( " Navire hors limite \n \n " ) ; /*Alors on dit au joueur que le navire est hors limite*/
2023-01-06 00:55:08 +01:00
}
}
2023-01-06 16:49:42 +01:00
} if ( verif2 ( plat ) = = 1 ) {
printf ( " Tout les navires ont bien été placé \n \n " ) ; /*On annonce que tout les bateaux ont étés placés*/
} else {
printf ( " Nombre de case navire incorrect \n \n " ) ;
2023-01-06 00:55:08 +01:00
}
}
}
2023-01-06 16:49:42 +01:00
int jouerJoueur2 ( char adv [ ] [ 10 ] ) { /*Phase de jeu*/
2023-01-06 00:55:08 +01:00
char c ;
int x ;
int y ;
2023-01-06 16:49:42 +01:00
scanf ( " %c%d " , & c , & y ) ; /*ON récupère le choix du joueur*/
2023-01-06 00:55:08 +01:00
x = c - ' A ' ;
2023-01-06 16:49:42 +01:00
if ( x > 10 | | x < 0 ) { /*En fonction du résultat, on dira que soit la coordonée n'est pas bonne, soit que le tire n'a pas touché de bateau ou que le tire à touché un bateau*/
2023-01-06 00:55:08 +01:00
return - 3 ;
}
if ( y > 10 | | y < 0 ) {
return - 3 ;
} switch ( adv [ x ] [ y ] ) {
case ' A ' : adv [ x ] [ y ] = ' x ' ; return 0 ;
case ' C ' : adv [ x ] [ y ] = ' x ' ; return 1 ;
case ' S ' : adv [ x ] [ y ] = ' x ' ; return 2 ;
case ' M ' : adv [ x ] [ y ] = ' x ' ; return 3 ;
case ' T ' : adv [ x ] [ y ] = ' x ' ; return 4 ;
case ' ' : adv [ x ] [ y ] = ' . ' ; return - 1 ;
} return - 2 ;
}