SAE1.1_DEV/MaBatailleNavale.c

222 lines
6.0 KiB
C
Raw Permalink Normal View History

#include "biblioNavale.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
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;
}