29 Novembre
This commit is contained in:
parent
688933e3be
commit
8a1c3bf8b4
75
.gitignore
vendored
75
.gitignore
vendored
@ -1,75 +0,0 @@
|
|||||||
# ---> C
|
|
||||||
# Prerequisites
|
|
||||||
*.d
|
|
||||||
|
|
||||||
# Object files
|
|
||||||
*.o
|
|
||||||
*.ko
|
|
||||||
*.obj
|
|
||||||
*.elf
|
|
||||||
|
|
||||||
# Linker output
|
|
||||||
*.ilk
|
|
||||||
*.map
|
|
||||||
*.exp
|
|
||||||
|
|
||||||
# Precompiled Headers
|
|
||||||
*.gch
|
|
||||||
*.pch
|
|
||||||
|
|
||||||
# Libraries
|
|
||||||
*.lib
|
|
||||||
*.a
|
|
||||||
*.la
|
|
||||||
*.lo
|
|
||||||
|
|
||||||
# Shared objects (inc. Windows DLLs)
|
|
||||||
*.dll
|
|
||||||
*.so
|
|
||||||
*.so.*
|
|
||||||
*.dylib
|
|
||||||
|
|
||||||
# Executables
|
|
||||||
*.exe
|
|
||||||
*.out
|
|
||||||
*.app
|
|
||||||
*.i*86
|
|
||||||
*.x86_64
|
|
||||||
*.hex
|
|
||||||
|
|
||||||
# Debug files
|
|
||||||
*.dSYM/
|
|
||||||
*.su
|
|
||||||
*.idb
|
|
||||||
*.pdb
|
|
||||||
|
|
||||||
# Kernel Module Compile Results
|
|
||||||
*.mod*
|
|
||||||
*.cmd
|
|
||||||
.tmp_versions/
|
|
||||||
modules.order
|
|
||||||
Module.symvers
|
|
||||||
Mkfile.old
|
|
||||||
dkms.conf
|
|
||||||
|
|
||||||
# ---> Vim
|
|
||||||
# Swap
|
|
||||||
[._]*.s[a-v][a-z]
|
|
||||||
!*.svg # comment out if you don't need vector files
|
|
||||||
[._]*.sw[a-p]
|
|
||||||
[._]s[a-rt-v][a-z]
|
|
||||||
[._]ss[a-gi-z]
|
|
||||||
[._]sw[a-p]
|
|
||||||
|
|
||||||
# Session
|
|
||||||
Session.vim
|
|
||||||
Sessionx.vim
|
|
||||||
|
|
||||||
# Temporary
|
|
||||||
.netrwhist
|
|
||||||
*~
|
|
||||||
# Auto-generated tag files
|
|
||||||
tags
|
|
||||||
# Persistent undo
|
|
||||||
[._]*.un~
|
|
||||||
|
|
@ -1,100 +0,0 @@
|
|||||||
#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
SAE1.1/Sujet.pdf
BIN
SAE1.1/Sujet.pdf
Binary file not shown.
@ -1,80 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
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);
|
|
Loading…
Reference in New Issue
Block a user