From a164a3eaa86fa9efb206d55381b9bc2e7e9f070d Mon Sep 17 00:00:00 2001 From: Simon Saye Babu Date: Wed, 30 Nov 2022 21:28:12 +0100 Subject: [PATCH] =?UTF-8?q?bataille=20navale=20finale=20avec=20les=20codes?= =?UTF-8?q?=20fusionn=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MaBatailleNavale.c | 222 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 222 insertions(+) create mode 100644 MaBatailleNavale.c diff --git a/MaBatailleNavale.c b/MaBatailleNavale.c new file mode 100644 index 0000000..b36c9e4 --- /dev/null +++ b/MaBatailleNavale.c @@ -0,0 +1,222 @@ +#include "biblioNavale.h" +#include +#include +#include + +int main(int argc, char const *argv[]) +{ + /*Initialisation des "plateaux" des joueurs 1 et 2 (ici représenté par des tableaux 2 dimension)*/ + char Joueur1[10][10]; + char Joueur2[10][10]; + + /*Placement des navires des joueurs 1 et 2*/ + printf("Joueur 1 :\n"); + initPlateau(Joueur1); + printf("Joueur 2 :\n"); + initPlateau(Joueur2); + + int porteAvionJ1=5; /*Ces variables sont décrémentées de 1 a chaque fois que l'un des navires du joueur respectif*/ + int croiseurJ1=4; /*est touché afin de stopper la boucle si un joueur detuit tout les navires adverses*/ + int sousMarinJ1=3; + int mousMarinJ1=3; + int torpilleurJ1=2; + + int porteAvionJ2=5; + int croiseurJ2=4; + int sousMarinJ2=3; + int mousMarinJ2=3; + int torpilleurJ2=2; + + int naviresRestantJ1=17; + int naviresRestantJ2=17; + + int resultatTour=0; /*Cette variable contient le retour de la fonction jouerJoueur*/ + + /*Debut de la boucle*/ + while((naviresRestantJ1>0)&&(naviresRestantJ2>0)) /*La condition verifie que l'un des deux joueur na pas abbatue tous les navires du joueur adverse*/ + { + /*Boucle Joueur 1*/ + do + { + /*Boucle choix de case*/ + do + { + if ((resultatTour==-3)||(resultatTour==-2)) /*Dans le cas ou on repasse dans la boucle a cause d'une mauvaise entrée utilisateur*/ + { + printf("Mauvais coup. Rejouez.\n"); + } + afficheduo(Joueur1,Joueur2); + printf("Le joueur 1 joue.\n"); + resultatTour=jouerJoueur(Joueur2); + }while((resultatTour==-3)||(resultatTour==-2)); /*Reste dans la boucle tant que l'utilisateur n'a pas rentrer des valeur valide*/ + /*Tous les prints selon la case choisie précédemment*/ + switch(resultatTour) + { + /*La case touché est un porte avion*/ + case 0: + porteAvionJ2--; /*decrémente le compte de case restantes du navire respectif*/ + naviresRestantJ2=porteAvionJ2+croiseurJ2+sousMarinJ2+mousMarinJ2+torpilleurJ2; /*Mets a jours le total de case contenant un navire restant au joueur*/ + if (porteAvionJ2==0) + { + printf("Touché !\nTu as coulé %s\n",navire(resultatTour)); + }else + { + printf("Touché !\n"); + } + break; + /*La case touché est un croiseur*/ + case 1: + croiseurJ2--; + naviresRestantJ2=porteAvionJ2+croiseurJ2+sousMarinJ2+mousMarinJ2+torpilleurJ2; + if (croiseurJ2==0) + { + printf("Touché !\nTu as coulé %s\n",navire(resultatTour)); + }else + { + printf("Touché !\n"); + } + break; + /*La case touché est un sous-marin*/ + case 2: + sousMarinJ2--; + naviresRestantJ2=porteAvionJ2+croiseurJ2+sousMarinJ2+mousMarinJ2+torpilleurJ2; + if (sousMarinJ2==0) + { + printf("Touché !\nTu as coulé %s\n",navire(resultatTour)); + }else + { + printf("Touché !\n"); + } + break; + /*La case touché est un mous-marin*/ + case 3: + mousMarinJ2--; + naviresRestantJ2=porteAvionJ2+croiseurJ2+sousMarinJ2+mousMarinJ2+torpilleurJ2; + if (mousMarinJ2==0) + { + printf("Touché !\nTu as coulé %s\n",navire(resultatTour)); + }else + { + printf("Touché !\n"); + } + break; + /*La case touché est un torpilleur*/ + case 4: + torpilleurJ2--; + naviresRestantJ2=porteAvionJ2+croiseurJ2+sousMarinJ2+mousMarinJ2+torpilleurJ2; + if (torpilleurJ2==0) + { + printf("Touché !\nTu as coulé %s\n",navire(resultatTour)); + }else + { + printf("Touché !\n"); + } + break; + /*La case touché est vide*/ + default: + printf("A l'eau !\n"); + } + if (!((naviresRestantJ1>0)&&(naviresRestantJ2>0))) /*Quitte la boucle si l'un des deux joueur a gagné*/ + { + break; + } + }while(resultatTour!=-1); + + resultatTour=0; + if (!((naviresRestantJ1>0)&&(naviresRestantJ2>0))) /*Idem*/ + { + break; + } + + /*Boucle du Joueur 2*/ + do /*Boucle du Joueur 2 idem que le 1 mais les variables sont modifiée*/ + { + do + { + if ((resultatTour==-3)||(resultatTour==-2)) + { + printf("Mauvais coup. Rejouez.\n"); + } + afficheduo(Joueur1,Joueur2); + printf("Le joueur 2 joue.\n"); + resultatTour=jouerJoueur(Joueur1); + }while((resultatTour==-3)||(resultatTour==-2)); + switch(resultatTour) + { + case 0: + porteAvionJ1--; + naviresRestantJ1=porteAvionJ1+croiseurJ1+sousMarinJ1+mousMarinJ1+torpilleurJ1; + if (porteAvionJ1==0) + { + printf("Touché !\nTu as coulé %s\n",navire(resultatTour)); + }else + { + printf("Touché !\n"); + } + break; + case 1: + croiseurJ1--; + naviresRestantJ1=porteAvionJ1+croiseurJ1+sousMarinJ1+mousMarinJ1+torpilleurJ1; + if (croiseurJ1==0) + { + printf("Touché !\nTu as coulé %s\n",navire(resultatTour)); + }else + { + printf("Touché !\n"); + } + break; + case 2: + sousMarinJ1--; + naviresRestantJ1=porteAvionJ1+croiseurJ1+sousMarinJ1+mousMarinJ1+torpilleurJ1; + if (sousMarinJ1==0) + { + printf("Touché !\nTu as coulé %s\n",navire(resultatTour)); + }else + { + printf("Touché !\n"); + } + break; + case 3: + mousMarinJ1--; + naviresRestantJ1=porteAvionJ1+croiseurJ1+sousMarinJ1+mousMarinJ1+torpilleurJ1; + if (mousMarinJ1==0) + { + printf("Touché !\nTu as coulé %s\n",navire(resultatTour)); + }else + { + printf("Touché !\n"); + } + break; + case 4: + torpilleurJ1--; + naviresRestantJ1=porteAvionJ1+croiseurJ1+sousMarinJ1+mousMarinJ1+torpilleurJ1; + if (torpilleurJ1==0) + { + printf("Touché !\nTu as coulé %s\n",navire(resultatTour)); + }else + { + printf("Touché !\n"); + } + break; + default: + printf("A l'eau !\n"); + } + if (!((naviresRestantJ1>0)&&(naviresRestantJ2>0))) + { + break; + } + }while(resultatTour!=-1); + } + + if (naviresRestantJ1==0) + { + printf("Le joueur 2 a gagné !\n"); + } + if (naviresRestantJ2==0) + { + printf("le joueur 1 a gagné !\n"); + } + + + return 0; +} \ No newline at end of file