#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; }