SAE partie 2

This commit is contained in:
Derqsi BILAL 2025-01-17 16:17:38 +01:00
parent c279bdc6cb
commit 4019c6178c

@ -1,145 +1,131 @@
void ajoutNavireAleatoireDeux(char tab[][10],char b,int t); /* biblioNavale.h */
int verifDeux(char tab[][10]); #include <stdlib.h>
void afficheDeux(char t[][10]) #include <stdio.h>
void afficheduoDeux(char t[][10],char p[][10]){ #include <time.h>
printf("_|");
for (int i = 0; i < 10; i++)
{
printf("%d|",i);
}
printf(" ");
printf("_|");
for (int i = 0; i < 10; i++)
{
printf("%d|",i);
}
printf("\n");
printf("A|")
for (int i = 0; i < 10; i++)
{
if(t[i][1]==0){
printf(" |");
}
if(t[i][1]==1){
printf("X|");
}
if(t[i][1]==2){
printf(".|");
}
}
printf(" ");
printf("A|")
for (int i = 0; i < 10; i++)
{
if(t[i][1]==0){
printf(" |");
}
if(t[i][1]==1){
printf("X|");
}
if(t[i][1]==2){
printf(".|");
}
}
printf("\n");
printf("B|")
for (int i = 0; i < 10; i++)
{
if(t[i][2]==0){
printf(" |");
}
if(t[i][2]==1){
printf("X|");
}
if(t[i][2]==2){
printf(".|");
}
}
printf(" ");
printf("B|")
for (int i = 0; i < 10; i++)
{
if(t[i][2]==0){
printf(" |");
}
if(t[i][2]==1){
printf("X|");
}
if(t[i][2]==2){
printf(".|");
}
}
};
void initPlateauDeux(char plat[][10]);
int jouerJoueurDeux(char adv[][10]);
void ajoutNavireAleatoire(char tab[][10], char b, int t) {
int direction = rand() % 2; // 0 for horizontal, 1 for vertical
int x, y;
int valid = 0;
char* navireDeux(int i){ while (!valid) {
if(i==1){char navire[11]; if (direction == 0) { // Horizontal
navire[0]='P'; x = rand() % (10 - t + 1);
navire[1]='o'; y = rand() % 10;
navire[2]='r'; place = 1;
navire[3]='t'; for (int i = 0; i < t; i++) {
navire[4]='e'; if (tab[y][x + i] != ' ') {
navire[5]='-'; place = 0;
navire[6]='A'; break;
navire[7]='v'; }
navire[8]='i'; }
navire[9]='o'; } else { // Vertical
navire[10]='n'; x = rand() % 10;
navire[11]='\0'; y = rand() % (10 - t + 1);
return navire;} place = 1;
if(i==2){char navire [8]; for (int i = 0; i < t; i++) {
navire[0]='C'; if (tab[y + i][x] != ' ') {
navire[1]='r'; place = 0;
navire[2]='o'; break;
navire[3]='i'; }
navire[4]='s'; }
navire[5]='e'; }
navire[6]='u'; if (place) {
navire[7]='r'; for (int i = 0; i < t; i++) {
navire[8]='\0'; if (direction == 0) {
return navire;} tab[y][x + i] = b;
if(i==3){char navire[10]; } else {
navire[0]='S'; tab[y + i][x] = b;
navire[1]='o'; }
navire[2]='u'; }
navire[3]='s'; }
navire[4]='-'; }
navire[5]='M'; }
navire[6]='a';
navire[7]='r'; int verif(char tab[][10]) {
navire[8]='i'; int nbcases = 0;
navire[9]='n'; for (int i = 0; i < 10; i++) {
navire[10]='\0'; for (int j = 0; j < 10; j++) {
return navire;} if (tab[i][j] != ' ') {
if(i==4){char navire[10]; nbcases++;
navire[0]='M'; }
navire[1]='o'; }
navire[2]='u'; }
navire[3]='s'; return nbcases == 17 ;
navire[4]='-'; }
navire[5]='S';
navire[6]='a'; void affiche(char t[][10]) {
navire[7]='r'; printf(" A B C D E F G H I J\n");
navire[8]='i'; for (int i = 0; i < 10; i++) {
navire[9]='n'; printf("%2d ", i + 1);
navire[10]='\0'; for (int j = 0; j < 10; j++) {
return navire;} printf("%c ", t[i][j]);
if(i==5){char navire[10]; }
navire[0]='T'; printf("\n");
navire[1]='o'; }
navire[2]='r'; }
navire[3]='p';
navire[4]='i'; void afficheduo(char t[][10], char p[][10]) {
navire[5]='l'; printf(" A B C D E F G H I J A B C D E F G H I J\n");
navire[6]='l'; for (int i = 0; i < 10; i++) {
navire[7]='e'; printf("%2d ", i + 1);
navire[8]='u'; for (int j = 0; j < 10; j++) {
navire[9]='r'; printf("%c ", t[i][j]);
navire[10]='\0'; }
return navire;} printf(" %2d ", i + 1);
if(i>5){return NULL;} for (int j = 0; j < 10; j++) {
if(i<1){return NULL;} printf("%c ", p[i][j]);
}; }
printf("\n");
}
}
void initPlateau(char plat[][10]) {
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
plat[i][j] = ' ';
}
}
ajoutNavireAleatoire(plat, 'A', 5); // Porte-Avion
ajoutNavireAleatoire(plat, 'C', 4); // Croiseur
ajoutNavireAleatoire(plat, 'S', 3); // Sous-Marin
ajoutNavireAleatoire(plat, 'M', 3); // Mous-Sarin
ajoutNavireAleatoire(plat, 'T', 2); // Torpilleur
}
int jouerJoueur(char adv[][10]) {
int x, y;
printf("Entrez les coordonnées (ex: A5): ");
char input[3];
scanf("%2s", input);
x = input[0] - 'A';
y = input[1] - '1';
if (x < 0 || x >= 10 || y < 0 || y >= 10) {
return -3; // Hors plateau
}
char target = adv[y][x];
switch (target) {
case ' ': adv[y][x] = '.'; return -1; // À l'eau
case 'A': adv[y][x] = 'X'; return 0; // Porte-Avion
case 'C': adv[y][x] = 'X'; return 1; // Croiseur
case 'S': adv[y][x] = 'X'; return 2; // Sous-Marin
case 'M': adv[y][x] = 'X'; return 3; // Mous-Sarin
case 'T': adv[y][x] = 'X'; return 4; // Torpilleur
case '.':
case 'X': return -2; // Case déjà touchée
default: return -2; // Caractère non reconnu
}
}
char* navire(int i) {
switch (i) {
case 1: return "Porte-Avion";
case 2: return "Croiseur";
case 3: return "Sous-Marin";
case 4: return "Mous-Sarin";
case 5: return "Torpilleur";
default: return "Inconnu";
}
}