222 lines
6.0 KiB
C
222 lines
6.0 KiB
C
#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;
|
|
} |