Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parGuillaume Leloup Modifié depuis plus de 9 années
1
Ferhat nouis Cédric tanguy Eric abrial Gregory nazaire
OTHELLO PROJET INFO 2005 Ferhat nouis Cédric tanguy Eric abrial Gregory nazaire
2
SOMMAIRE I Partie de ferhat II partie de cedric III Partie de eric
IV Partie de gregory
3
Ferhat nouis 1) affichage du tableau : void tableau(T_TAB tab)
tab[ i ] [ j ]
4
Ferhat nouis 2) le main On initialise le tableau: tab[ i ] [ j ] = ‘ ‘ sauf les 4 du milieu Puis appel de la fonction choix_du_jeu( &choix, name, name2);
5
Ferhat nouis 3)choix_du_jeu( &choix, name, name2)
c’est l’interface, le menu du jeu. Methode de blindage des saisies: printf("Qui commence? %s ( taper 1 ) ou %s? ( taper 2 ) \n",name3,name4); scanf("%s",saisie); while ((cc = getchar()) != '\n' && cc != EOF); } while ( ((saisie[0] !=49) && (saisie[0] !=50))||(saisie[1]!='\0')); &choix est un int qui est rendu ensuite au main.
6
Ferhat nouis Puis on propose a l’utilisateur de rejouer
Retour au main: La valeur de arret permet de savoir si on calcule le score ou pas Puis on propose a l’utilisateur de rejouer
7
Ferhat nouis 3) score.c void calcul_score (T_TAB tab,int choix,char name[15], char name2[15]) Scanne le tableau et calcule le score de Noir et celui de Blanc. Enregistre le resultat dans un fichier « sauvegarde_score.txt » En fonction du score et du choix il ecrit: "%s a battu %s par %d a %d\n", name2,name,b,n) "L'ordinateur a battu %s par %d a %d\n",name,n,b)
8
Ferhat nouis void score_noir (T_TAB tab) void score_blanc (T_TAB tab)
void Noir_joue ( T_TAB tab, int *noir ) permet de savoir si noir peut jouer. *noir prennent la valeur 0 si noir peut jouer. Sinon *noir =1. void Blanc_joue( T_TAB tab, int *blanc ) meme chose
9
Cédric tanguy -gestion de la partie joueur contre joueur
- validation d’un coup et inversion
10
Cédric tanguy 1) Fonction verifie
11
Cédric tanguy int verifie1_ direction(int i,int j,char couleur1,char couleur2, T_TAB tab) Chaque fonction verifie1_direction ne prend que 2 valeurs: 0 ou 1: 0 si le joueur ne peut pas prendre de pions adverse dans la «direction indiqué » 1 si le joueur peut prendre de pions adverse dans la «direction indiqué » La fonction verifie prend 1 si au moins une des 8 fonctions prend 1: on dit alors que le coup est valide
12
Cédric tanguy verifie1_dte( 5,6,’*’,’o’,tab)=1
verifie1_haut(2,2,’o’,’*’,tab)=1 verifie1_bas(7,1,’o’,’*’,tab)=1
13
Cédric tanguy verifie1 appelle verifie2 si:
1) la case est vide ET 2) la case adjacente est de couleur opposée sinon verifie1 renvoie 0 3 choix possibles pour verifie2: la case est vide ou inoccupée: verifie2=0 la case est de meme couleur : verifie2=1 3) La case est de couleur opposée: verifie2 se reappelle recursivement j i verifie1_haut(1,3,’*’,’o’,tab)? verifie1_haut(0,7,’*’,’o’,tab)?
14
Cédric tanguy 2) gestion du mode joueur contre joueur
void joueurvsjoueur ( T_TAB tab , int *arret, char name[15], char name2[15] )
15
Cédric tanguy Principe général de la fonction: Sauvegarde. REPETER
Si noir peut jouer: Etude de la combinaison Inversion sauvegarde Si blanc peut jouer: inversion JUSQU A CE QUE Noir et blanc ne peuvent plus jouer
16
Cédric tanguy Principe général de la fonction: Sauvegarde. REPETER
Si noir peut jouer: etablit par la fonction Noir_joue de ferhat Etude de la combinaison Inversion sauvegarde Si blanc peut jouer: etablit par la fonction Blanc_joue de ferhat inversion JUSQU A CE QUE Noir et blanc ne peuvent plus jouer Si (*noir ET *blanc =1 ) OU *arret =1
17
Cédric tanguy Principe général de la fonction: Sauvegarde. REPETER
Si noir peut jouer: l’utilisateur tape une commande normale Etude de la combinaison Inversion l’utilisateur tape une combinaison speciale sauvegarde Si blanc peut jouer: inversion JUSQU A CE QUE Noir et blanc ne peuvent plus jouer
18
Cédric tanguy void choix_speciaux ( char lettre, int chiffre, char entree, FILE *sauver, int * charge, T_TAB tab, int *arret) Si « r1 » lire_regle() Si « a1 » lire_aide() Si « q1 » *arret=1 Si « s1 » sauvegarder(tab,sauver) Si « c1 » charger(tab,sauver,&charge) Si « c2 » annuler_coup(tab,sauver,&charge)
19
Cédric tanguy Principe général de la fonction: Sauvegarde. REPETER
Si noir peut jouer: Etude de la combinaison charge=0 Inversion sauvegarde Si blanc peut jouer: inversion JUSQU A CE QUE Noir et blanc ne peuvent plus jouer
20
Cédric tanguy Principe général de la fonction: Sauvegarde.
REPETER charge=1 Si noir peut jouer: Etude de la combinaison Inversion sauvegarde Si blanc peut jouer: inversion JUSQU A CE QUE Noir et blanc ne peuvent plus jouer
21
Cédric tanguy Principe général de la fonction: Sauvegarde. REPETER
Si noir peut jouer: Etude de la combinaison charge=2 Inversion sauvegarde Si blanc peut jouer: inversion JUSQU A CE QUE Noir et blanc ne peuvent plus jouer
22
Eric abrial charger_binaire Enregistrement - Chargement.c lire_regles
lire_aide charger annuler_coup sauvcpc sauvegarder sauv_binaire sauv_texte charger_binaire copieFichier
23
Eric abrial 1) sauvegarde: sauvcpc FILE *sauver
sauver = fopen( "temp", "a") sauver temp
24
Eric abrial sauver temp 1
25
Eric abrial sauver temp 1 2
26
Eric abrial sauver temp 1 2 3
27
Eric abrial sauver temp 1 2 3 . . . N
28
Eric abrial 1) sauvegarde:sauv_binaire fDest sauver
Nom de la sauvegarde temp 1 2 3 . . . N
29
Eric abrial fDest sauver Nom de la sauvegarde temp 1 1 2 2
copiefichier 3 3 . . . . . . N N
30
Eric abrial 2) chargement sauver temp 1 2 3 . . . N
31
Eric abrial charge2 sauver Nom de la sauvegarde temp 1 1’ 2 2’ 3 3’ .
32
Eric abrial charge2 sauver Nom de la sauvegarde temp 1’ 2’ 3’ . . . N’
33
Eric abrial Visualiser les coups précédents charge2
Nom de la sauvegarde N’ = ftell(charge2)/(64) for ( i=0;i<N’;i++) { fread( tab, sizeof(T_TAB),1, charge2);} tableau(tab) fseek(charge2, 0, SEEK_SET) 1’ 2’ 3’ . . . N’
34
Eric abrial Ne rien faire: for ( i=0;i<N’;i++) {
fread( tab, sizeof(T_TAB),1, charge2) fwrite( tab, sizeof(T_TAB),1, sauver) } *charge=1 charge2 sauver Nom de la sauvegarde temp 1’ 1’ 2’ 2’ 3’ 3’ . . . . . . . . . . N’ N’
35
Eric abrial Un coup en arriere: for ( i=0;i<(N’-1);i++) {
fread( tab, sizeof(T_TAB),1, charge2) fwrite( tab, sizeof(T_TAB),1, sauver) } *charge=2 charge2 sauver Nom de la sauvegarde temp 1’ 1’ 2’ 2’ 3’ 3’ . . . . . . . . . . N’-1 . . N’
36
Eric abrial Deux coups en arriere: for ( i=0;i<(N’-2);i++) {
fread( tab, sizeof(T_TAB),1, charge2) fwrite( tab, sizeof(T_TAB),1, sauver) } *charge=1 charge2 sauver Nom de la sauvegarde temp 1’ 1’ 2’ 2’ 3’ 3’ . . . . . . . N’-2 . . . . N’
37
Eric abrial 3) annuler_coup sauver2 sauver temp temp2 1 2 3 . . . N
38
Eric abrial sauver2 sauver temp temp2 1 1 2 2 copie 3 3 . . . . . . N
39
Eric abrial 3) annuler_coup sauver2 sauver temp temp2 1 2 3 . . . N-1
40
Eric abrial sauver2 sauver temp temp2 1 1 2 2 copie 3 3 . . . . . .
N-1 N-1
41
Eric abrial sauver2 sauver temp temp2 1 1 2 2 3 3 . . . . . . N-1 N-1
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.