Ferhat NOUIS Cédric TANGUY Eric ABRIAL Gregory NAZAIRE OTHELLO PROJET INFO 2005 Ferhat NOUIS Cédric TANGUY Eric ABRIAL Gregory NAZAIRE
SOMMAIRE I - Partie de Ferhat II - Partie de Cédric III - Partie d’Eric IV - Partie de Gregory
Ferhat NOUIS 1) Affichage du tableau void tableau(T_TAB tab) tab[ i ] [ j ]
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) ;
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.
Ferhat NOUIS 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
Ferhat NOUIS 4) 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)
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
Cédric TANGUY gestion de la partie joueur contre joueur validation d’un coup et inversion
Cédric TANGUY 1) Fonction verifie
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
Cédric TANGUY verifie1_dte( 5,6,’*’,’o’,tab)=1 verifie1_haut(2,2,’o’,’*’,tab)=1 verifie1_bas(7,1,’o’,’*’,tab)=1
Cédric TANGUY verifie1 appelle verifie2 si : 1) la case est vide 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)?
Cédric TANGUY 2) gestion du mode joueur contre joueur void joueurvsjoueur ( T_TAB tab , int *arret, char name[15], char name2[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
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
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
Cédric TANGUY Si « r1 » lire_regle() Si « a1 » lire_aide() 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)
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
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
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
Eric ABRIAL Charge_binaire Enregistrement - Chargement.c lire_regles lire_aide charger annuler_coup sauvcpc sauvegarder sauv_binaire sauv_texte Charge_binaire Copiefichier
Eric ABRIAL 1) sauvegarde FILE *sauver; sauver = fopen( "temp", "a");
Eric ABRIAL 1) sauvegarde sauver temp 1
Eric ABRIAL 1) sauvegarde sauver temp 1 2
Eric ABRIAL 1) sauvegarde sauver temp 1 2 3
Eric ABRIAL 1) sauvegarde sauver temp 1 2 3 . . . N
Eric ABRIAL 1) sauvegarde fDest sauver Nom de la sauvegarde temp 1 1 2 copiefichier 3 3 . . . . . . N N
Eric ABRIAL 2) chargement charge2 sauver Nom de la sauvegarde temp 1 1’ 2 2’ 3 3’ . . . . . . N N’
Eric ABRIAL 2) chargement 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’
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’
Eric ABRIAL Un coup en arrière: 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’-1 N’
Eric ABRIAL 2 coups en arrière: 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’-2 N’-1 N’
Eric ABRIAL 3) annuler_coup sauver2 sauver temp temp2 1 1 2 2 copie 3 . . . . . . N N-1
Eric ABRIAL 3) annuler_coup sauver2 sauver temp temp2 1 1 2 2 copie 3 . . . . . . N-1 N-1
Eric ABRIAL 3) annuler_coup sauver2 sauver temp temp2 1 1 2 2 3 3 . .