Upload files to ''

This commit is contained in:
Adrian POURCHOT 2022-11-30 01:01:17 +01:00
parent 66bbd32f0e
commit cb3ff0b810
6 changed files with 180 additions and 0 deletions

BIN
BatailleNavale.o Normal file

Binary file not shown.

100
MaBatailleNavale.c Normal file
View File

@ -0,0 +1,100 @@
#include <stdio.h>
#include <stdlib.h>
#include "biblioNavale.h"
int main(void){
int victoire=0;
int coup=0;
int joueur=1;
int PorteAvionJ1=0;
int CroiseurJ1=0;
int SousMarinJ1=0;
int MarinSousJ1=0;
int TorpilleurJ1=0;
int PorteAvionJ2=0;
int CroiseurJ2=0;
int SousMarinJ2=0;
int MarinSousJ2=0;
int TorpilleurJ2=0;
char PlateauJ1[10][10]={" "};
char PlateauJ2[10][10]={" "};
printf("Bienvenue sur cette simulation de la Bataille Navale.\n");
printf("Votre objectif sera de détruire la totalite des navires adverses !\n");
printf("Joueur 1:\n");
initPlateau(PlateauJ1);
printf("Joueur 2:\n");
initPlateau(PlateauJ2);
while (victoire==0){
while (joueur==1){
printf("Au tour de Joueur 1\n\n\n");
printf(" Joueur 1 Joueur 2\n");
afficheduo(PlateauJ1,PlateauJ2);
printf("Veuillez saisir une coordonnée: ");
coup=jouerJoueur(PlateauJ2);
switch(coup){
case -3: printf("\nCoup en dehors des limites, veuillez recommencer.\n");break;
case -2: printf("\nCaractere non reconnu, veuillez recommencer.\n");break;
case -1: printf("\nA l'eau\n");joueur=2;break;
case 0: printf("\nTouche ! Vous pouvez rejouer !\n") ; PorteAvionJ1++;
(PorteAvionJ1==5)? printf("Coule !\n"):printf("Le bateau n'a pas encore coule.\n") ; break ;
case 1: printf("\nTouche ! Vous pouvez rejouer !\n") ; CroiseurJ1++;
(CroiseurJ1==4)? printf("Coule !\n"):printf("Le bateau n'a pas encore coule.\n") ; break ;
case 2: printf("\nTouche ! Vous pouvez rejouer !\n") ; SousMarinJ1++;
(SousMarinJ1==3)? printf("Coule !\n"):printf("Le bateau n'a pas encore coule.\n") ; break ;
case 3: printf("\nTouche ! Vous pouvez rejouer !\n") ; MarinSousJ1++;
(MarinSousJ1==3)? printf("Coule !\n"):printf("Le bateau n'a pas encore coule.\n") ; break;
case 4: printf("\nTouche ! Vous pouvez rejouer !\n") ; TorpilleurJ1++;
(TorpilleurJ1==2)? printf("Coule !\n"):printf("Le bateau n'a pas encore coule.\n") ; break ;
} if( PorteAvionJ1==5 && CroiseurJ1==4 && SousMarinJ1==3 && MarinSousJ1==3 && TorpilleurJ1==2 ){
victoire=1;
joueur=0;
printf("Le Joueur 1 remporte la partie !\n\n");
}
}
while (joueur==2){
printf("Au tour de Joueur 2\n\n\n");
printf(" Joueur 1 Joueur 2\n");
afficheduo(PlateauJ1,PlateauJ2);
printf("Veuillez saisir une coordonnée: ");
coup=jouerJoueur(PlateauJ1);
switch(coup){
case -3: printf("\nCoup en dehors des limites, veuillez recommencer.\n");break;
case -2: printf("\nCaractere non reconnu, veuillez recommencer.\n");break;
case -1: printf("\nA l'eau\n");joueur=1;break;
case 0: printf("\nTouche ! Vous pouvez rejouer !\n") ; PorteAvionJ1++;
(PorteAvionJ2==5)? printf("Coule !\n"):printf("Le bateau n'a pas encore coule.\n") ; break ;
case 1: printf("\nTouche ! Vous pouvez rejouer !\n") ; CroiseurJ1++;
(CroiseurJ2==4)? printf("Coule !\n"):printf("Le bateau n'a pas encore coule.\n") ; break ;
case 2: printf("\nTouche ! Vous pouvez rejouer !\n") ; SousMarinJ1++;
(SousMarinJ2==3)? printf("Coule !\n"):printf("Le bateau n'a pas encore coule.\n") ; break ;
case 3: printf("\nTouche ! Vous pouvez rejouer !\n") ; MarinSousJ1++;
(MarinSousJ2==3)? printf("Coule !\n"):printf("Le bateau n'a pas encore coule.\n") ; break;
case 4: printf("\nTouche ! Vous pouvez rejouer !\n") ; TorpilleurJ1++;
(TorpilleurJ2==2)? printf("Coule !\n"):printf("Le bateau n'a pas encore coule.\n") ; break ;
} if( PorteAvionJ2==5 && CroiseurJ2==4 && SousMarinJ2==3 && MarinSousJ2==3 && TorpilleurJ2==2 ){
victoire=1;
joueur=0;
printf("Le Joueur 2 remporte la partie !\n\n");
}
}
}
return EXIT_SUCCESS;
}

BIN
MaBatailleNavale.o Normal file

Binary file not shown.

BIN
Sujet.pdf Normal file

Binary file not shown.

80
biblioNavale.h Normal file
View File

@ -0,0 +1,80 @@
/*
ajoutNavireAleatoire permet d'ajouter au tableau tab un Navire de taille t, et représenté par le caractère b.
résultat : t cases consécutives de tab reçoivent le caractère b.
fonctionnement :
La fonction choisit aléatoirement si le navire sera horizontal ou vertical,
puis en fonction de cela choisit aléatoirement la position de façon à ce que le navire ne dépasse pas du tableau.
retour : vide
*/
void ajoutNavireAleatoire(char tab[][10],char b,int t);
/*
verif vérifie que le tableau tab contient bien les navires demandés
résultat : renvoie l'entier 1 si tab contient exactement 17 cases ne contenant pas un espace
renvoie 0 sinon.
*/
int verif(char tab[][10]);
/*
affiche permet d'afficher sur la sortie standard le tableau t, sous forme de grille de bataille navale.
retour : vide
*/
void affiche(char t[][10]);
/*
afficheduo permet d'afficher côte à côte les tableaux t et p, sous forme de grilles de bataille navale.
retour : vide
*/
void afficheduo(char t[][10],char p[][10]);
/*
initPlateau permet à un joueur d'initialiser le tableau plat, en y plaçant ses navires.
résultat : A la fin de la fonction, le tableau plat contient les 5 navires de la bataille navale, placés selon les règles.
retour : vide
fonctionnement :
Le joueur peut placer ses navires de deux façons :
- Aléatoirement, auquel cas la fonction appelle ajoutNavireAléatoire de façon adaptée afin d'obtenir le résultat.
- A la main, auquel cas le joueur doit dire si son navire est horizontal ou vertical,
et donner la coordonnée la plus nord-ouest. Si l'utilisateur place mal son Navire, il lui est demandé de le replacer.
*/
void initPlateau(char plat[][10]);
/*
joueurJoueur permet à un joueur de jouer sur le tableau adv.
résultat : L'utilisateur entre des coordonnées, le tableau est modifié pour indiquer s'il le coup est "à l'eau" ou "touche"
retourne un entier, correspondant au Navire touché :
-1 si le coup est à l'eau
0 si le coup touche le Porte-Avion
1 si le coup touche le Croiseur
2 si le coup touche le Sous-Marin
3 si le coup touche le Mous-Sarin
4 si le coup touche le Torpilleur
-2 si la case contient un caractère non reconnu (ne devrait pas arriver)
-3 si le coup est hors plateau
*/
int jouerJoueur(char adv[][10]);
/*
navire renvoie une chaîne de caractères correspondant à Navire, selon l'entier entré :
résultat : selon l'entier i donnée en argument, navire renvoie :
Porte-Avion si i=1
Croiseur si i=2
Sous-Marin si i=3
Mous-Sarin si i=4
*/
char* navire(int i);

BIN
biblioNavale.o Normal file

Binary file not shown.