begin process at 2012 05 27 19:36:53
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > YAHTZEE (JEU DE DÉS TRÈS COMPLET!) (VISUAL C++)

YAHTZEE (JEU DE DÉS TRÈS COMPLET!) (VISUAL C++)


 Information sur la source

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Jeux Niveau :Débutant Date de création :03/04/2002 Date de mise à jour :30/05/2002 10:36:22 Vu / téléchargé :18 863 / 414

Auteur : Wepawetmose

Ecrire un message privé
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Salut! Me revoilà! Je vous propose un de mes plus gros projets: un jeu de Yahtzee, c'est un jeu de dés, mais dans mon programme on joue tout seul. Je vous mets le fichier source principal, mais il faut télécharger le zip pour récupérer tous les headers qui vont dans le projet.
Mon projet gère aussi un fichier des meilleurs scores, battez donc le mien!
J'ai fait quelques modifications!!
!! NE FAITES SURTOUT PAS DE COPIER-COLLER !!  

Source

  • #include<iostream.h>
  • #include<conio.h> //pour la fonction getch()
  • #include<stdlib.h> //pour les fonctions srand(unsigned) et rand()
  • #include<time.h> //pour la fonction time(long)
  • #include<stdio.h> //pour les flux fichiers
  • #include"test.h" //les fonctions de test également commentées
  • #include"econio.h" //pour la fonction clrscr()
  • int as,deux,trois,quatre,cinq,six,brelan,carre,full,psuite,gsuite,yahtzee,chance,pyahtzee;
  • //déclaration des variables globales représentant les scores
  • struct joueur
  • {
  • char nom[30];
  • int score;
  • };
  • void init()
  • //les variables sont initialisées à -1 (=vide)
  • {
  • as=-1;
  • deux=-1;
  • trois=-1;
  • quatre=-1;
  • cinq=-1;
  • six=-1;
  • brelan=-1;
  • carre=-1;
  • full=-1;
  • psuite=-1;
  • gsuite=-1;
  • yahtzee=-1;
  • chance=-1;
  • pyahtzee=-1;
  • }
  • void aide()
  • //du texte uniquement, la règle du jeu
  • {
  • clrscr();
  • cout<<"= = = YAHTZEE = = =\n\n";
  • cout<<"Le Yahtzee est un jeu de d\x82s. Ce programme est fait\n";
  • cout<<"pour un seul joueur, mais vous pouvez jouer les uns apr\x8As\n";
  • cout<<"les autres et comparer vos scores."<<endl;
  • getch();
  • //attend la frappe d'une touche
  • cout<<"\n LE JEU\n\n";
  • cout<<"A chaque tour les d\x82s peuvent \x88tre lanc\x82s trois\n";
  • cout<<"fois au maximum. Mais le joueur peut, s'il le d\x82sire,\n";
  • cout<<"ne les lancer qu'une ou deux fois.\n";
  • cout<<"La premi\x8Are fois, le joueur doit obligatoirement\n";
  • cout<<"lancer tous les d\x82s.\n";
  • cout<<"Si le joueur decide de lancer les d\x82s une deuxi\x8Ame\n";
  • cout<<"et troisieme fois, il peut ramasser tous les d\x82s\n";
  • cout<<"ou seulement ceux de son choix et les lancer \x85 nouveau.\n";
  • cout<<"Apr\x8As la troisi\x8Ame fois les d\x82s ne peuvent plus\n";
  • cout<<"\x88tre lanc\x82s et les points obtenus doivent \x88tre marqu\x82s."<<endl;
  • getch();
  • cout<<"\n RESUME DU JEU\n\n";
  • cout<<"Lancez les d\x82s trois fois maximum de fa\x87on \x85\n";
  • cout<<"obtenir la meilleure combinaison possible.\n";
  • cout<<"Inscrivez votre score dans l'une des 13 cases: 6 dans la\n";
  • cout<<"section sup\x82rieure et 7 dans la section inf\x82rieure.\n";
  • cout<<"Les cases peuvent \x88tre remplies dans n'importe quel\n";
  • cout<<"ordre, mais obligatoirement une \x85 chaque tour."<<endl;
  • getch();
  • cout<<"\n COMMENT MAQUER LES POINTS\n\n";
  • cout<<" La section sup\x82rieure\n";
  • cout<<"As \x85 Six : Vous obtenez un ou plusieurs as, vous faites le total\n";
  • cout<<"des as, vous les inscrivez dans la case des As, ...etc\n\n";
  • cout<<" La section inf\x82rieure\n";
  • cout<<"Brelan : Vous obtenez trois d\x82s indiquant le m\x88me\n";
  • cout<<"chiffre et deux autres chiffres.\n";
  • cout<<"Carr\x82 : Vous obtenez quatre d\x82s indiquant le m\x88me\n";
  • cout<<"chiffre et un autre chiffre.\n";
  • cout<<"Full : Vous obtenez une combinaison de deux et de trois\n";
  • cout<<"d\x82s identiques.\n";
  • cout<<"Petite Suite : Vous obtenez une suite de quatre chiffres.\n";
  • cout<<"Grande Suite : Vous obtenez une suite de cinq chiffres.\n";
  • cout<<"Yahtzee : Vous obtenez cinq chiffres identiques."<<endl;
  • getch();
  • cout<<"\n CHANCE\n\n";
  • cout<<"C'est l'occasion unique pour le joueur de marquer le total\n";
  • cout<<"de ses cinq d\x82s par n'importe quelle combinaison. Vous\n";
  • cout<<"pouvez utiliser la case 'Chance' lorque vous obtenez une combinaison\n";
  • cout<<"d\x82j\x85 inscrite sur votre feuille de score, ou lorsque\n";
  • cout<<"vous ne pouvez inscrire votre score dans aucune des autres cases\n";
  • cout<<"disponibles."<<endl;
  • getch();
  • cout<<"\n OPTION ZERO\n\n";
  • cout<<"Au cours du jeu, le joueur peut choisir, s'il pense que\n";
  • cout<<"c'est \x85 son avantage, d'inscrire un 0 \x85 la fin du tour\n";
  • cout<<"plutot que de marquer des points..."<<endl;
  • getch();
  • cout<<"\n PRIME DE 35 POINTS\n\n";
  • cout<<"Si vous totalisez 63 points (ou plus) dans la section\n";
  • cout<<"sup\x82rieure, vous obtenez une prime de 35 points."<<endl;
  • getch();
  • cout<<"\n PRIME YAHTZEE\n\n";
  • cout<<"Vous avez droit \x85 une prime Yahtzee qui vaut 100 points lorsque\n";
  • cout<<"vous faites d'autres Yahtzee \x85 la seule condition que le premier\n";
  • cout<<"Yahtzee ait \x82t\x82 inscrit dans la case appropriee. Si le\n";
  • cout<<"joueur a d\x82j\x85 inscrit un 0 dans la case Yahtzee, il ne\n";
  • cout<<"poura b\x82neficier d'aucune prime Yahtzee."<<endl;
  • getch();
  • }
  • void menu(de de[]) //la structure "de" se trouve dans le header test
  • {
  • int choix,pts;
  • bool marked; //booléen indiquant si un score a été inscrit ou non
  • do{
  • marked=true;
  • cout<<"Dans quelle case veux-tu inscrire tes points?\n";
  • cout<<"1. As\n";
  • cout<<"2. Deux\n";
  • cout<<"3. Trois\n";
  • cout<<"4. Quatre\n";
  • cout<<"5. Cinq\n";
  • cout<<"6. Six\n";
  • cout<<"7. Brelan\n";
  • cout<<"8. Carre\n";
  • cout<<"9. Full\n";
  • cout<<"10. Petite Suite\n";
  • cout<<"11. Grande Suite\n";
  • cout<<"12. Yahtzee\n";
  • cout<<"13. Chance\n";
  • cout<<"14. Prime Yahtzee\n";
  • cout<<"choix: ";cin>>choix;
  • switch(choix)
  • {
  • case 1:
  • if(as==-1) //seulement si la case as est vide...
  • {
  • pts=_as(de); //pts prend le nombre de points comptés
  • if(pts==0) //si aucun point n'est compté...
  • {
  • cout<<"Vous n'avez pas d'as...\n";
  • cout<<"1. Inscrire un score nul\n";
  • cout<<"2. Annuler\n";
  • cout<<"choix: ";cin>>choix;
  • if(choix==1)as=0; //soit on inscrit un score nul
  • else{clrscr();marked=false;} //soit on retourne au menu
  • }
  • else as=pts; //si le score est positif, on l'inscrit
  • }
  • else{clrscr();cout<<"Case deja remplie!\n";marked=false;}
  • //si la case n'est pas vide, on indique que le score
  • //ne sera pas inscrit à l'aide du booléen marked
  • break;
  • case 2:
  • if(deux==-1)
  • {
  • pts=_deux(de);
  • if(pts==0)
  • {
  • cout<<"\nVous n'avez pas de deux...\n";
  • cout<<"1. Inscrire un score nul\n";
  • cout<<"2. Annuler\n";
  • cout<<"choix: ";cin>>choix;
  • if(choix==1)deux=0;
  • else{clrscr();marked=false;}
  • }
  • else deux=pts;
  • }
  • else{clrscr();cout<<"Case deja remplie!\n";marked=false;}
  • break;
  • case 3:
  • if(trois==-1)
  • {
  • pts=_trois(de);
  • if(pts==0)
  • {
  • cout<<"\nVous n'avez pas de trois...\n";
  • cout<<"1. Inscrire un score nul\n";
  • cout<<"2. Annuler\n";
  • cout<<"choix: ";cin>>choix;
  • if(choix==1)trois=0;
  • else{clrscr();marked=false;}
  • }
  • else trois=pts;
  • }
  • else{clrscr();cout<<"Case deja remplie!\n";marked=false;}
  • break;
  • case 4:
  • if(quatre==-1)
  • {
  • pts=_quatre(de);
  • if(pts==0)
  • {
  • cout<<"\nVous n'avez pas de quatre...\n";
  • cout<<"1. Inscrire un score nul\n";
  • cout<<"2. Annuler\n";
  • cout<<"choix: ";cin>>choix;
  • if(choix==1)quatre=0;
  • else{clrscr();marked=false;}
  • }
  • else quatre=pts;
  • }
  • else{clrscr();cout<<"Case deja remplie!\n";marked=false;}
  • break;
  • case 5:
  • if(cinq==-1)
  • {
  • pts=_cinq(de);
  • if(pts==0)
  • {
  • cout<<"\nVous n'avez pas de cinq...\n";
  • cout<<"1. Inscrire un score nul\n";
  • cout<<"2. Annuler\n";
  • cout<<"choix: ";cin>>choix;
  • if(choix==1)cinq=0;
  • else{clrscr();marked=false;}
  • }
  • else cinq=pts;
  • }
  • else{clrscr();cout<<"Case deja remplie!\n";marked=false;}
  • break;
  • case 6:
  • if(six==-1)
  • {
  • pts=_six(de);
  • if(pts==0)
  • {
  • cout<<"\nVous n'avez pas de six...\n";
  • cout<<"1. Inscrire un score nul\n";
  • cout<<"2. Annuler\n";
  • cout<<"choix: ";cin>>choix;
  • if(choix==1)six=0;
  • else{clrscr();marked=false;}
  • }
  • else six=pts;
  • }
  • else{clrscr();cout<<"Case deja remplie!\n";marked=false;}
  • break;
  • case 7:
  • if(brelan==-1)
  • {
  • pts=_brelan(de);
  • if(pts==0)
  • {
  • cout<<"\nVous n'avez pas de brelan...\n";
  • cout<<"1. Inscrire un score nul\n";
  • cout<<"2. Annuler\n";
  • cout<<"choix: ";cin>>choix;
  • if(choix==1)brelan=0;
  • else{clrscr();marked=false;}
  • }
  • else brelan=pts;
  • }
  • else{clrscr();cout<<"Case deja remplie!\n";marked=false;}
  • break;
  • case 8:
  • if(carre==-1)
  • {
  • pts=_carre(de);
  • if(pts==0)
  • {
  • cout<<"\nVous n'avez pas de carre...\n";
  • cout<<"1. Inscrire un score nul\n";
  • cout<<"2. Annuler\n";
  • cout<<"choix: ";cin>>choix;
  • if(choix==1)carre=0;
  • else{clrscr();marked=false;}
  • }
  • else carre=pts;
  • }
  • else{clrscr();cout<<"Case deja remplie!\n";marked=false;}
  • break;
  • case 9:
  • if(full==-1)
  • {
  • pts=_full(de);
  • if(pts==0)
  • {
  • cout<<"\nVous n'avez pas de full...\n";
  • cout<<"1. Inscrire un score nul\n";
  • cout<<"2. Annuler\n";
  • cout<<"choix: ";cin>>choix;
  • if(choix==1)full=0;
  • else{clrscr();marked=false;}
  • }
  • else full=pts;
  • }
  • else{clrscr();cout<<"Case deja remplie!\n";marked=false;}
  • break;
  • case 10:
  • if(psuite==-1)
  • {
  • pts=_psuite(de);
  • if(pts==0)
  • {
  • cout<<"\nVous n'avez pas de petite suite...\n";
  • cout<<"1. Inscrire un score nul\n";
  • cout<<"2. Annuler\n";
  • cout<<"choix: ";cin>>choix;
  • if(choix==1)psuite=0;
  • else{clrscr();marked=false;}
  • }
  • else psuite=pts;
  • }
  • else{clrscr();cout<<"Case deja remplie!\n";marked=false;}
  • break;
  • case 11:
  • if(gsuite==-1)
  • {
  • pts=_gsuite(de);
  • if(pts==0)
  • {
  • cout<<"\nVous n'avez pas de grande suite...\n";
  • cout<<"1. Inscrire un score nul\n";
  • cout<<"2. Annuler\n";
  • cout<<"choix: ";cin>>choix;
  • if(choix==1)gsuite=0;
  • else{clrscr();marked=false;}
  • }
  • else gsuite=pts;
  • }
  • else{clrscr();cout<<"Case deja remplie!\n";marked=false;}
  • break;
  • case 12:
  • if(yahtzee==-1)
  • {
  • pts=_yahtzee(de);
  • if(pts==0)
  • {
  • cout<<"\nVous n'avez pas de yahtzee...\n";
  • cout<<"1. Inscrire un score nul\n";
  • cout<<"2. Annuler\n";
  • cout<<"choix: ";cin>>choix;
  • if(choix==1){yahtzee=0;pyahtzee=0;}
  • //si un score nul est inscrit dans la case yahtzee
  • //alors un score nul est automatiquement inscrit
  • //dans la case de prime yahtzee (voir règles)
  • else{clrscr();marked=false;}
  • }
  • else yahtzee=pts;
  • }
  • else{clrscr();cout<<"Case deja remplie!\n";marked=false;}
  • break;
  • case 13:
  • if(chance==-1)chance=_chance(de);
  • //la seule condition est que la case soit vide
  • else{clrscr();cout<<"Case deja remplie!\n";marked=false;}
  • break;
  • case 14:
  • if(pyahtzee==-1) //si la case de prime yahtzee est vide
  • {
  • if(yahtzee==-1) //si la case du yahtzee est vide...
  • {clrscr();cout<<"La case yahtzee est vide!\n";marked=false;}
  • //...la prime est impossible
  • else
  • {
  • pts=_yahtzee(de); //on teste s'il y a yahtzee
  • if(pts==0)
  • {
  • cout<<"\nVous n'avez pas de yahtzee...\n";
  • cout<<"1. Inscrire un score nul\n";
  • cout<<"2. Annuler\n";
  • cout<<"choix: ";cin>>choix;
  • if(choix==1)pyahtzee=0;
  • else{clrscr();marked=false;}
  • }
  • else pyahtzee=pts*2;
  • //la prime coûte 2 fois plus que le yahtzee
  • }
  • }
  • else{clrscr();cout<<"Impossible!\n";marked=false;}
  • //la prime n'est autorisée qu'une seule fois
  • break;
  • default: //si un autre chois est fait...
  • clrscr();
  • cout<<"Choix non valide!\n";
  • marked=false;
  • break;
  • }
  • }while(marked==false); //boucle tant qu'aucun score n'est inscrit
  • }
  • bool testfin()
  • {
  • if(as!=-1 && deux!=-1 && trois!=-1 && quatre!=-1 && cinq!=-1 && six!=-1 && brelan!=-1 && carre!=-1 && full!=-1 && psuite!=-1 && gsuite!=-1 && yahtzee!=-1 && chance!=-1 && pyahtzee!=-1)
  • //si toutes les cases sont remplies...
  • return true;
  • //...alors la partie est terminée
  • return false;
  • }
  • void affiche(de de[])
  • //affiche 5 dés à l'aide de boucles affichant des barres, des
  • //underscores, des espaces et des 'o' en fonction des valeurs tirées
  • {
  • int i;
  • cout<<" _______ _______ _______ _______ _______\n";
  • cout<<"\xB3 \xB3 \xB3 \xB3 \xB3 \xB3 \xB3 \xB3 \xB3 \xB3\n";
  • for(i=1;i<6;i++)
  • {
  • cout<<"\xB3 ";
  • if(de[i].valeur==4 || de[i].valeur==5 || de[i].valeur==6)
  • cout<<"o";else cout<<" ";
  • cout<<" ";
  • if(de[i].valeur!=1)cout<<"o";else cout<<" ";
  • cout<<" \xB3 ";
  • }
  • cout<<endl;
  • for(i=1;i<6;i++)
  • {
  • cout<<"\xB3 ";
  • if(de[i].valeur==6)cout<<"o";else cout<<" ";
  • if(de[i].valeur==1 || de[i].valeur==3 || de[i].valeur==5)
  • cout<<"o";else cout<<" ";
  • if(de[i].valeur==6)cout<<"o";else cout<<" ";
  • cout<<" \xB3 ";
  • }
  • cout<<endl;
  • for(i=1;i<6;i++)
  • {
  • cout<<"\xB3 ";
  • if(de[i].valeur!=1)cout<<"o";else cout<<" ";
  • cout<<" ";
  • if(de[i].valeur==4 || de[i].valeur==5 || de[i].valeur==6)
  • cout<<"o";else cout<<" ";
  • cout<<" \xB3 ";
  • }
  • cout<<endl;
  • cout<<"\xB3_______\xB3 \xB3_______\xB3 \xB3_______\xB3 \xB3_______\xB3 \xB3_______\xB3\n";
  • cout<<" 1 2 3 4 5\n";
  • cout<<endl;
  • }
  • void lancer(de de[])
  • {
  • time_t t; //déclaration pour la fonction time(...)
  • int i,j,choix,nb,num;
  • //nb représente le nombre de dés que le joueur décide de garder
  • //num prend les numéros des dés que le joueur décide de garder
  • for(i=1;i<6;i++)de[i].garde=0;
  • //les dés gardés ne peuvent pas être lancés, alors on les dégarde
  • for(i=0;i<3;i++)
  • {
  • cout<<"\nlancer num\x82ro "<<i+1<<endl;
  • srand(time(&t)); //initialise le "randomize timer"
  • for(j=1;j<6;j++)if(de[j].garde==0)de[j].valeur=rand()%6+1;
  • //tire une valeur entre 1 et 6 pour chaque dé non-gardé
  • affiche(de); //et affiche les dés
  • if(i!=2) //si ce n'est pas le dernier lancer
  • {
  • cout<<"\n1. Relancer\n";
  • cout<<"2. Garder tous les d\x82s\n";
  • cout<<"choix: ";cin>>choix;
  • if(choix==1)
  • {
  • for(j=1;j<6;j++)de[j].garde=0;
  • do{
  • cout<<"\nGarder combien de d\x82s? (0-4) ";cin>>nb;
  • if(nb<0 || nb>4)cout<<"Nombre incorrect!\n";
  • }while(nb<0 || nb>4);
  • cout<<"\nLe(s)quel(s)? (1-5) (tape ENTREE entre chaque numero)\n";
  • for(j=0;j<nb;j++)
  • {
  • cin>>num;
  • if(num<1 || num>5){cout<<"Non valide!\n";j--;}
  • else if(de[num].garde==1){cout<<"D\x82j\x85 gard\x82!\n";j--;}
  • else de[num].garde=1;
  • //si le joueur décide de garder ce dé, on met
  • //la garde du dé à 1 pour le prochain lancer
  • }
  • }
  • else break;
  • }
  • }
  • if(choix==1)getch();
  • clrscr();
  • }
  • int score()
  • //affiche la feuille des scores
  • //retourne le total des points jusqu'à maintenant
  • {
  • int total1=0,total2=0,total,prime;
  • clrscr();
  • cout<<"Section Sup\x82rieure\n";
  • cout<<"* Total des AS \xB3 ";
  • if(as>=0){cout<<as<<endl;total1=total1+as;}else cout<<endl;
  • cout<<"** Total des DEUX \xB3 ";
  • if(deux>=0){cout<<deux<<endl;total1=total1+deux;}else cout<<endl;
  • cout<<"*** Total des TROIS \xB3 ";
  • if(trois>=0){cout<<trois<<endl;total1=total1+trois;}else cout<<endl;
  • cout<<"**** Total des QUATRE \xB3 ";
  • if(quatre>=0){cout<<quatre<<endl;total1=total1+quatre;}else cout<<endl;
  • cout<<"***** Total des CINQ \xB3 ";
  • if(cinq>=0){cout<<cinq<<endl;total1=total1+cinq;}else cout<<endl;
  • cout<<"****** Total des SIX \xB3 ";
  • if(six>=0){cout<<six<<endl;total1=total1+six;}else cout<<endl;
  • cout<<" Total \xB3 "<<total1<<endl;
  • if(total1>=63)prime=35;else prime=0;
  • cout<<"63+ Prime de 35 points \xB3 "<<prime<<endl;
  • cout<<"Total de la section sup\x82rieure \xB3 "<<total1+prime<<endl;
  • cout<<"______________________________\n";
  • cout<<"Section Inf\x82rieure\n";
  • cout<<"Brelan Total des 5 d\x82s \xB3 ";
  • if(brelan>=0){cout<<brelan<<endl;total2=total2+brelan;}else cout<<endl;
  • cout<<"Carr\x82 Total des 5 d\x82s \xB3 ";
  • if(carre>=0){cout<<carre<<endl;total2=total2+carre;}else cout<<endl;
  • cout<<"Full 25 points \xB3 ";
  • if(full>=0){cout<<full<<endl;total2=total2+full;}else cout<<endl;
  • cout<<"Petite Suite 30 points \xB3 ";
  • if(psuite>=0){cout<<psuite<<endl;total2=total2+psuite;}else cout<<endl;
  • cout<<"Grande Suite 40 points \xB3 ";
  • if(gsuite>=0){cout<<gsuite<<endl;total2=total2+gsuite;}else cout<<endl;
  • cout<<"Yahtzee 50 points \xB3 ";
  • if(yahtzee>=0){cout<<yahtzee<<endl;total2=total2+yahtzee;}else cout<<endl;
  • cout<<"Chance Total des 5 d\x82s \xB3 ";
  • if(chance>=0){cout<<chance<<endl;total2=total2+chance;}else cout<<endl;
  • cout<<"Prime Yahtzee 100 points \xB3 ";
  • if(pyahtzee>=0){cout<<pyahtzee<<endl;total2=total2+pyahtzee;}else cout<<endl;
  • cout<<"Total de la section inf\x82rieure \xB3 "<<total2<<endl;
  • cout<<"Total de la section sup\x82rieure \xB3 "<<total1<<endl;
  • cout<<"______________________________\n";
  • total=total1+total2;
  • cout<<" Total G\x82n\x82ral \xB3 "<<total<<endl;
  • getch();
  • return total;
  • }
  • void main()
  • {
  • cout<<"Bienvenue dans mon jeu de Yahtzee pour un joueur\n\n";
  • de de[6]; //il n'y a pas 6 dés?!?... de[0] ne sert à rien
  • joueur best[10]; //les trois meilleurs joueurs
  • int choix1,choix2,pts,i,position;
  • FILE *f;
  • f=fopen("bestscores.wep","r");
  • //on ouvre le fichier en lecture
  • if(f==NULL)for(i=0;i<10;i++){best[i].nom[0]='\0';best[i].score=0;}
  • //s'il n'existe pas, on initialise les noms et scores des joueurs
  • else
  • {
  • fread(best,sizeof(joueur),10,f);
  • fclose(f);
  • //sinon on enregistre les données dans le tableau best[3]
  • }
  • do{
  • cout<<"1. Nouvelle Partie\n";
  • cout<<"2. Meilleurs Scores\n";
  • cout<<"3. R\x8Agles du Jeu\n";
  • cout<<"4. Quitter\n";
  • cout<<"choix: ";cin>>choix1;
  • if(choix1==1){
  • clrscr();
  • init();
  • pts=0;
  • do{
  • cout<<"1. Lancer les des\n";
  • cout<<"2. Voir la feuille de scores\n";
  • cout<<"3. Aide\n";
  • cout<<"4. Abandonner la partie\n";
  • cout<<"choix: ";cin>>choix2;
  • if(choix2==1)
  • {
  • lancer(de);
  • clrscr();
  • menu(de);
  • pts=score();
  • }
  • if(choix2==2)score();
  • if(choix2==3)aide();
  • clrscr();
  • if(testfin()==true)break;
  • //si toutes les cases sont remplies, on sort
  • }while(choix2!=4);
  • cout<<"Partie terminee!!\n";
  • cout<<"Ton score est: "<<pts<<endl;
  • position=10; //on initialise position
  • for(i=0;i<10;i++)if(pts>=best[i].score){position=i;break;}
  • //si le score est supérieur à un des dix meilleurs,
  • //on enregistre l'indice dans la variable position
  • if(position!=10){ //s'il fait partie des dix premiers
  • for(i=9;i>position;i--)best[i]=best[i-1];
  • //on décale les autres scores du tableau
  • cout<<"Tu fais partie des meilleurs joueurs!\n";
  • cout<<"Tape ton nom: ";cin>>best[position].nom;
  • //on enregistre le nom au bon endroit...
  • best[position].score=pts; //et le score
  • }
  • f=fopen("bestscores.wep","w");
  • //on ouvre le fichier des meilleurs scores en écriture
  • fwrite(best,sizeof(joueur),10,f);
  • //et on y enregistre le tableau best
  • fclose(f);
  • getch();
  • clrscr();
  • }
  • if(choix1==2){
  • clrscr();
  • f=fopen("bestscores.wep","r");
  • //on ouvre le fichier des meilleurs scores en lecture
  • if(f==NULL)cout<<"Aucun meilleur score"<<endl;
  • else{
  • cout<<"= = MEILLEURS SCORES = =\n\n";
  • fread(best,sizeof(joueur),10,f);
  • fclose(f);
  • for(i=1;i<11;i++){
  • cout<<i<<") ";
  • if(i!=10)cout<<" ";
  • cout<<best[i-1].nom<<" "<<best[i-1].score<<endl;
  • }
  • //s'il existe, on lit et affiche les noms et scores
  • }
  • getch();
  • }
  • if(choix1==3)aide();
  • clrscr();
  • }while(choix1!=4);
  • }
#include<iostream.h>
#include<conio.h> //pour la fonction getch()
#include<stdlib.h> //pour les fonctions srand(unsigned) et rand()
#include<time.h> //pour la fonction time(long)
#include<stdio.h> //pour les flux fichiers
#include"test.h" //les fonctions de test également commentées
#include"econio.h" //pour la fonction clrscr()

int as,deux,trois,quatre,cinq,six,brelan,carre,full,psuite,gsuite,yahtzee,chance,pyahtzee;
//déclaration des variables globales représentant les scores

struct joueur
{
	char nom[30];
	int score;
};

void init()
//les variables sont initialisées à -1 (=vide)
{
	as=-1;
	deux=-1;
	trois=-1;
	quatre=-1;
	cinq=-1;
	six=-1;
	brelan=-1;
	carre=-1;
	full=-1;
	psuite=-1;
	gsuite=-1;
	yahtzee=-1;
	chance=-1;
	pyahtzee=-1;
}

void aide()
//du texte uniquement, la règle du jeu
{
	clrscr();
	cout<<"= = = YAHTZEE = = =\n\n";
	cout<<"Le Yahtzee est un jeu de d\x82s. Ce programme est fait\n";
	cout<<"pour un seul joueur, mais vous pouvez jouer les uns apr\x8As\n";
	cout<<"les autres et comparer vos scores."<<endl;
	getch();
	//attend la frappe d'une touche
	cout<<"\n LE JEU\n\n";
	cout<<"A chaque tour les d\x82s peuvent \x88tre lanc\x82s trois\n";
	cout<<"fois au maximum. Mais le joueur peut, s'il le d\x82sire,\n";
	cout<<"ne les lancer qu'une ou deux fois.\n";
	cout<<"La premi\x8Are fois, le joueur doit obligatoirement\n";
	cout<<"lancer tous les d\x82s.\n";
	cout<<"Si le joueur decide de lancer les d\x82s une deuxi\x8Ame\n";
	cout<<"et troisieme fois, il peut ramasser tous les d\x82s\n";
	cout<<"ou seulement ceux de son choix et les lancer \x85 nouveau.\n";
	cout<<"Apr\x8As la troisi\x8Ame fois les d\x82s ne peuvent plus\n";
	cout<<"\x88tre lanc\x82s et les points obtenus doivent \x88tre marqu\x82s."<<endl;
	getch();
	cout<<"\n RESUME DU JEU\n\n";
	cout<<"Lancez les d\x82s trois fois maximum de fa\x87on \x85\n";
	cout<<"obtenir la meilleure combinaison possible.\n";
	cout<<"Inscrivez votre score dans l'une des 13 cases: 6 dans la\n";
	cout<<"section sup\x82rieure et 7 dans la section inf\x82rieure.\n";
	cout<<"Les cases peuvent \x88tre remplies dans n'importe quel\n";
	cout<<"ordre, mais obligatoirement une \x85 chaque tour."<<endl;
	getch();
	cout<<"\n COMMENT MAQUER LES POINTS\n\n";
	cout<<" La section sup\x82rieure\n";
	cout<<"As \x85 Six : Vous obtenez un ou plusieurs as, vous faites le total\n";
	cout<<"des as, vous les inscrivez dans la case des As, ...etc\n\n";
	cout<<" La section inf\x82rieure\n";
	cout<<"Brelan : Vous obtenez trois d\x82s indiquant le m\x88me\n";
	cout<<"chiffre et deux autres chiffres.\n";
	cout<<"Carr\x82 : Vous obtenez quatre d\x82s indiquant le m\x88me\n";
	cout<<"chiffre et un autre chiffre.\n";
	cout<<"Full : Vous obtenez une combinaison de deux et de trois\n";
	cout<<"d\x82s identiques.\n";
	cout<<"Petite Suite : Vous obtenez une suite de quatre chiffres.\n";
	cout<<"Grande Suite : Vous obtenez une suite de cinq chiffres.\n";
	cout<<"Yahtzee : Vous obtenez cinq chiffres identiques."<<endl;
	getch();
	cout<<"\n CHANCE\n\n";
	cout<<"C'est l'occasion unique pour le joueur de marquer le total\n";
	cout<<"de ses cinq d\x82s par n'importe quelle combinaison. Vous\n";
	cout<<"pouvez utiliser la case 'Chance' lorque vous obtenez une combinaison\n";
	cout<<"d\x82j\x85 inscrite sur votre feuille de score, ou lorsque\n";
	cout<<"vous ne pouvez inscrire votre score dans aucune des autres cases\n";
	cout<<"disponibles."<<endl;
	getch();
	cout<<"\n OPTION ZERO\n\n";
	cout<<"Au cours du jeu, le joueur peut choisir, s'il pense que\n";
	cout<<"c'est \x85 son avantage, d'inscrire un 0 \x85 la fin du tour\n";
	cout<<"plutot que de marquer des points..."<<endl;
	getch();
	cout<<"\n PRIME DE 35 POINTS\n\n";
	cout<<"Si vous totalisez 63 points (ou plus) dans la section\n";
	cout<<"sup\x82rieure, vous obtenez une prime de 35 points."<<endl;
	getch();
	cout<<"\n PRIME YAHTZEE\n\n";
	cout<<"Vous avez droit \x85 une prime Yahtzee qui vaut 100 points lorsque\n";
	cout<<"vous faites d'autres Yahtzee \x85 la seule condition que le premier\n";
	cout<<"Yahtzee ait \x82t\x82 inscrit dans la case appropriee. Si le\n";
	cout<<"joueur a d\x82j\x85 inscrit un 0 dans la case Yahtzee, il ne\n";
	cout<<"poura b\x82neficier d'aucune prime Yahtzee."<<endl;
	getch();
}
void menu(de de[]) //la structure "de" se trouve dans le header test
{
	int choix,pts;
	bool marked; //booléen indiquant si un score a été inscrit ou non
	do{
		marked=true;
		cout<<"Dans quelle case veux-tu inscrire tes points?\n";
		cout<<"1. As\n";
		cout<<"2. Deux\n";
		cout<<"3. Trois\n";
		cout<<"4. Quatre\n";
		cout<<"5. Cinq\n";
		cout<<"6. Six\n";
		cout<<"7. Brelan\n";
		cout<<"8. Carre\n";
		cout<<"9. Full\n";
		cout<<"10. Petite Suite\n";
		cout<<"11. Grande Suite\n";
		cout<<"12. Yahtzee\n";
		cout<<"13. Chance\n";
		cout<<"14. Prime Yahtzee\n";
		cout<<"choix: ";cin>>choix;
		switch(choix)
		{
		case 1:
			if(as==-1) //seulement si la case as est vide...
			{
				pts=_as(de); //pts prend le nombre de points comptés
				if(pts==0) //si aucun point n'est compté...
				{
					cout<<"Vous n'avez pas d'as...\n";
					cout<<"1. Inscrire un score nul\n";
					cout<<"2. Annuler\n";
					cout<<"choix: ";cin>>choix;
					if(choix==1)as=0; //soit on inscrit un score nul
					else{clrscr();marked=false;} //soit on retourne au menu
				}
				else as=pts; //si le score est positif, on l'inscrit
			}
			else{clrscr();cout<<"Case deja remplie!\n";marked=false;}
			//si la case n'est pas vide, on indique que le score
			//ne sera pas inscrit à l'aide du booléen marked
			break;
		case 2:
			if(deux==-1)
			{
				pts=_deux(de);
				if(pts==0)
				{
					cout<<"\nVous n'avez pas de deux...\n";
					cout<<"1. Inscrire un score nul\n";
					cout<<"2. Annuler\n";
					cout<<"choix: ";cin>>choix;
					if(choix==1)deux=0;
					else{clrscr();marked=false;}
				}
				else deux=pts;
			}
			else{clrscr();cout<<"Case deja remplie!\n";marked=false;}
			break;
		case 3:
			if(trois==-1)
			{
				pts=_trois(de);
				if(pts==0)
				{
					cout<<"\nVous n'avez pas de trois...\n";
					cout<<"1. Inscrire un score nul\n";
					cout<<"2. Annuler\n";
					cout<<"choix: ";cin>>choix;
					if(choix==1)trois=0;
					else{clrscr();marked=false;}
				}
				else trois=pts;
			}
			else{clrscr();cout<<"Case deja remplie!\n";marked=false;}
			break;
		case 4:
			if(quatre==-1)
			{
				pts=_quatre(de);
				if(pts==0)
				{
					cout<<"\nVous n'avez pas de quatre...\n";
					cout<<"1. Inscrire un score nul\n";
					cout<<"2. Annuler\n";
					cout<<"choix: ";cin>>choix;
					if(choix==1)quatre=0;
					else{clrscr();marked=false;}
				}
				else quatre=pts;
			}
			else{clrscr();cout<<"Case deja remplie!\n";marked=false;}
			break;
		case 5:
			if(cinq==-1)
			{
				pts=_cinq(de);
				if(pts==0)
				{
					cout<<"\nVous n'avez pas de cinq...\n";
					cout<<"1. Inscrire un score nul\n";
					cout<<"2. Annuler\n";
					cout<<"choix: ";cin>>choix;
					if(choix==1)cinq=0;
					else{clrscr();marked=false;}
				}
				else cinq=pts;
			}
			else{clrscr();cout<<"Case deja remplie!\n";marked=false;}
			break;
		case 6:
			if(six==-1)
			{
				pts=_six(de);
				if(pts==0)
				{
					cout<<"\nVous n'avez pas de six...\n";
					cout<<"1. Inscrire un score nul\n";
					cout<<"2. Annuler\n";
					cout<<"choix: ";cin>>choix;
					if(choix==1)six=0;
					else{clrscr();marked=false;}
				}
				else six=pts;
			}
			else{clrscr();cout<<"Case deja remplie!\n";marked=false;}
			break;
		case 7:
			if(brelan==-1)
			{
				pts=_brelan(de);
				if(pts==0)
				{
					cout<<"\nVous n'avez pas de brelan...\n";
					cout<<"1. Inscrire un score nul\n";
					cout<<"2. Annuler\n";
					cout<<"choix: ";cin>>choix;
					if(choix==1)brelan=0;
					else{clrscr();marked=false;}
				}
				else brelan=pts;
			}
			else{clrscr();cout<<"Case deja remplie!\n";marked=false;}
			break;
		case 8:
			if(carre==-1)
			{
				pts=_carre(de);
				if(pts==0)
				{
					cout<<"\nVous n'avez pas de carre...\n";
					cout<<"1. Inscrire un score nul\n";
					cout<<"2. Annuler\n";
					cout<<"choix: ";cin>>choix;
					if(choix==1)carre=0;
					else{clrscr();marked=false;}
				}
				else carre=pts;
			}
			else{clrscr();cout<<"Case deja remplie!\n";marked=false;}
			break;
		case 9:
			if(full==-1)
			{
				pts=_full(de);
				if(pts==0)
				{
					cout<<"\nVous n'avez pas de full...\n";
					cout<<"1. Inscrire un score nul\n";
					cout<<"2. Annuler\n";
					cout<<"choix: ";cin>>choix;
					if(choix==1)full=0;
					else{clrscr();marked=false;}
				}
				else full=pts;
			}
			else{clrscr();cout<<"Case deja remplie!\n";marked=false;}
			break;
		case 10:
			if(psuite==-1)
			{
				pts=_psuite(de);
				if(pts==0)
				{
					cout<<"\nVous n'avez pas de petite suite...\n";
					cout<<"1. Inscrire un score nul\n";
					cout<<"2. Annuler\n";
					cout<<"choix: ";cin>>choix;
					if(choix==1)psuite=0;
					else{clrscr();marked=false;}
				}
				else psuite=pts;
			}
			else{clrscr();cout<<"Case deja remplie!\n";marked=false;}
			break;
		case 11:
			if(gsuite==-1)
			{
				pts=_gsuite(de);
				if(pts==0)
				{
					cout<<"\nVous n'avez pas de grande suite...\n";
					cout<<"1. Inscrire un score nul\n";
					cout<<"2. Annuler\n";
					cout<<"choix: ";cin>>choix;
					if(choix==1)gsuite=0;
					else{clrscr();marked=false;}
				}
				else gsuite=pts;
			}
			else{clrscr();cout<<"Case deja remplie!\n";marked=false;}
			break;
		case 12:
			if(yahtzee==-1)
			{
				pts=_yahtzee(de);
				if(pts==0)
				{
					cout<<"\nVous n'avez pas de yahtzee...\n";
					cout<<"1. Inscrire un score nul\n";
					cout<<"2. Annuler\n";
					cout<<"choix: ";cin>>choix;
					if(choix==1){yahtzee=0;pyahtzee=0;}
					//si un score nul est inscrit dans la case yahtzee
					//alors un score nul est automatiquement inscrit
					//dans la case de prime yahtzee (voir règles)
					else{clrscr();marked=false;}
				}
				else yahtzee=pts;
			}
			else{clrscr();cout<<"Case deja remplie!\n";marked=false;}
			break;
		case 13:
			if(chance==-1)chance=_chance(de);
			//la seule condition est que la case soit vide
			else{clrscr();cout<<"Case deja remplie!\n";marked=false;}
			break;
		case 14:
			if(pyahtzee==-1) //si la case de prime yahtzee est vide
			{
				if(yahtzee==-1) //si la case du yahtzee est vide...
				{clrscr();cout<<"La case yahtzee est vide!\n";marked=false;}
				//...la prime est impossible
				else
				{
					pts=_yahtzee(de); //on teste s'il y a yahtzee
					if(pts==0)
					{
						cout<<"\nVous n'avez pas de yahtzee...\n";
						cout<<"1. Inscrire un score nul\n";
						cout<<"2. Annuler\n";
						cout<<"choix: ";cin>>choix;
						if(choix==1)pyahtzee=0;
						else{clrscr();marked=false;}
					}		
					else pyahtzee=pts*2;
					//la prime coûte 2 fois plus que le yahtzee
				}
			}
			else{clrscr();cout<<"Impossible!\n";marked=false;}
			//la prime n'est autorisée qu'une seule fois
			break;
		default: //si un autre chois est fait...
			clrscr();
			cout<<"Choix non valide!\n";
			marked=false;
			break;
		}
	}while(marked==false); //boucle tant qu'aucun score n'est inscrit
}

bool testfin()
{
	if(as!=-1 && deux!=-1 && trois!=-1 && quatre!=-1 && cinq!=-1 && six!=-1 && brelan!=-1 && carre!=-1 && full!=-1 && psuite!=-1 && gsuite!=-1 && yahtzee!=-1 && chance!=-1 && pyahtzee!=-1)
		//si toutes les cases sont remplies...
		return true;
		//...alors la partie est terminée
	return false;
}

void affiche(de de[])
//affiche 5 dés à l'aide de boucles affichant des barres, des
//underscores, des espaces et des 'o' en fonction des valeurs tirées
{
	int i;
	cout<<" _______   _______   _______   _______   _______\n";
	cout<<"\xB3       \xB3 \xB3       \xB3 \xB3       \xB3 \xB3       \xB3 \xB3       \xB3\n";
	for(i=1;i<6;i++)
	{
		cout<<"\xB3  ";
		if(de[i].valeur==4 || de[i].valeur==5 || de[i].valeur==6)
			cout<<"o";else cout<<" ";
		cout<<" ";
		if(de[i].valeur!=1)cout<<"o";else cout<<" ";
		cout<<"  \xB3 ";
	}
	cout<<endl;
	for(i=1;i<6;i++)
	{
		cout<<"\xB3  ";
		if(de[i].valeur==6)cout<<"o";else cout<<" ";
		if(de[i].valeur==1 || de[i].valeur==3 || de[i].valeur==5)
			cout<<"o";else cout<<" ";
		if(de[i].valeur==6)cout<<"o";else cout<<" ";
		cout<<"  \xB3 ";
	}
	cout<<endl;
	for(i=1;i<6;i++)
	{
		cout<<"\xB3  ";
		if(de[i].valeur!=1)cout<<"o";else cout<<" ";
		cout<<" ";
		if(de[i].valeur==4 || de[i].valeur==5 || de[i].valeur==6)
			cout<<"o";else cout<<" ";
		cout<<"  \xB3 ";
	}
	cout<<endl;
	cout<<"\xB3_______\xB3 \xB3_______\xB3 \xB3_______\xB3 \xB3_______\xB3 \xB3_______\xB3\n";
	cout<<"    1         2         3         4         5\n";
	cout<<endl;
}

void lancer(de de[])
{
	time_t t; //déclaration pour la fonction time(...)
	int i,j,choix,nb,num;
	//nb représente le nombre de dés que le joueur décide de garder
	//num prend les numéros des dés que le joueur décide de garder
	for(i=1;i<6;i++)de[i].garde=0;
	//les dés gardés ne peuvent pas être lancés, alors on les dégarde
	for(i=0;i<3;i++)
	{
		cout<<"\nlancer num\x82ro "<<i+1<<endl;
		srand(time(&t)); //initialise le "randomize timer"
		for(j=1;j<6;j++)if(de[j].garde==0)de[j].valeur=rand()%6+1;
		//tire une valeur entre 1 et 6 pour chaque dé non-gardé
		affiche(de); //et affiche les dés
		if(i!=2) //si ce n'est pas le dernier lancer
		{
			cout<<"\n1. Relancer\n";
			cout<<"2. Garder tous les d\x82s\n";
			cout<<"choix: ";cin>>choix;
			if(choix==1)
			{
				for(j=1;j<6;j++)de[j].garde=0;
				do{
					cout<<"\nGarder combien de d\x82s? (0-4) ";cin>>nb;
					if(nb<0 || nb>4)cout<<"Nombre incorrect!\n";
				}while(nb<0 || nb>4);
				cout<<"\nLe(s)quel(s)? (1-5) (tape ENTREE entre chaque numero)\n";
				for(j=0;j<nb;j++)
				{
					cin>>num;
					if(num<1 || num>5){cout<<"Non valide!\n";j--;}
					else if(de[num].garde==1){cout<<"D\x82j\x85 gard\x82!\n";j--;}
					else de[num].garde=1;
					//si le joueur décide de garder ce dé, on met
					//la garde du dé à 1 pour le prochain lancer
				}
			}
			else break;
		}
	}
	if(choix==1)getch();
	clrscr();
}

int score()
//affiche la feuille des scores
//retourne le total des points jusqu'à maintenant
{
	int total1=0,total2=0,total,prime;
	clrscr();
	cout<<"Section Sup\x82rieure\n";
	cout<<"*                 Total des AS \xB3  ";
	if(as>=0){cout<<as<<endl;total1=total1+as;}else cout<<endl;
	cout<<"**              Total des DEUX \xB3  ";
	if(deux>=0){cout<<deux<<endl;total1=total1+deux;}else cout<<endl;
	cout<<"***            Total des TROIS \xB3  ";
	if(trois>=0){cout<<trois<<endl;total1=total1+trois;}else cout<<endl;
	cout<<"****          Total des QUATRE \xB3  ";
	if(quatre>=0){cout<<quatre<<endl;total1=total1+quatre;}else cout<<endl;
	cout<<"*****           Total des CINQ \xB3  ";
	if(cinq>=0){cout<<cinq<<endl;total1=total1+cinq;}else cout<<endl;
	cout<<"******           Total des SIX \xB3  ";
	if(six>=0){cout<<six<<endl;total1=total1+six;}else cout<<endl;
	cout<<"                         Total \xB3  "<<total1<<endl;
	if(total1>=63)prime=35;else prime=0;
	cout<<"63+         Prime de 35 points \xB3  "<<prime<<endl;
	cout<<"Total de la section sup\x82rieure \xB3  "<<total1+prime<<endl;
	cout<<"______________________________\n";
	cout<<"Section Inf\x82rieure\n";
	cout<<"Brelan         Total des 5 d\x82s \xB3  ";
	if(brelan>=0){cout<<brelan<<endl;total2=total2+brelan;}else cout<<endl;
	cout<<"Carr\x82          Total des 5 d\x82s \xB3  ";
	if(carre>=0){cout<<carre<<endl;total2=total2+carre;}else cout<<endl;
	cout<<"Full                 25 points \xB3  ";
	if(full>=0){cout<<full<<endl;total2=total2+full;}else cout<<endl;
	cout<<"Petite Suite         30 points \xB3  ";
	if(psuite>=0){cout<<psuite<<endl;total2=total2+psuite;}else cout<<endl;
	cout<<"Grande Suite         40 points \xB3  ";
	if(gsuite>=0){cout<<gsuite<<endl;total2=total2+gsuite;}else cout<<endl;
	cout<<"Yahtzee              50 points \xB3  ";
	if(yahtzee>=0){cout<<yahtzee<<endl;total2=total2+yahtzee;}else cout<<endl;
	cout<<"Chance         Total des 5 d\x82s \xB3  ";
	if(chance>=0){cout<<chance<<endl;total2=total2+chance;}else cout<<endl;
	cout<<"Prime Yahtzee       100 points \xB3  ";
	if(pyahtzee>=0){cout<<pyahtzee<<endl;total2=total2+pyahtzee;}else cout<<endl;
	cout<<"Total de la section inf\x82rieure \xB3  "<<total2<<endl;
	cout<<"Total de la section sup\x82rieure \xB3  "<<total1<<endl;
	cout<<"______________________________\n";
	total=total1+total2;
	cout<<"                 Total G\x82n\x82ral \xB3  "<<total<<endl;
	getch();
	return total;
}

void main()
{
	cout<<"Bienvenue dans mon jeu de Yahtzee pour un joueur\n\n";
	de de[6]; //il n'y a pas 6 dés?!?... de[0] ne sert à rien
	joueur best[10]; //les trois meilleurs joueurs
	int choix1,choix2,pts,i,position;
	FILE *f;
	f=fopen("bestscores.wep","r");
	//on ouvre le fichier en lecture
	if(f==NULL)for(i=0;i<10;i++){best[i].nom[0]='\0';best[i].score=0;}
	//s'il n'existe pas, on initialise les noms et scores des joueurs
	else
	{
		fread(best,sizeof(joueur),10,f);
		fclose(f);
		//sinon on enregistre les données dans le tableau best[3]
	}
	do{
		cout<<"1. Nouvelle Partie\n";
		cout<<"2. Meilleurs Scores\n";
		cout<<"3. R\x8Agles du Jeu\n";
		cout<<"4. Quitter\n";
		cout<<"choix: ";cin>>choix1;
		if(choix1==1){
			clrscr();
			init();
			pts=0;
			do{
				cout<<"1. Lancer les des\n";
				cout<<"2. Voir la feuille de scores\n";
				cout<<"3. Aide\n";
				cout<<"4. Abandonner la partie\n";
				cout<<"choix: ";cin>>choix2;
				if(choix2==1)
				{
					lancer(de);
					clrscr();
					menu(de);
					pts=score();
				}
				if(choix2==2)score();
				if(choix2==3)aide();
				clrscr();
				if(testfin()==true)break;
				//si toutes les cases sont remplies, on sort
			}while(choix2!=4);
			cout<<"Partie terminee!!\n";
			cout<<"Ton score est: "<<pts<<endl;
			position=10; //on initialise position
			for(i=0;i<10;i++)if(pts>=best[i].score){position=i;break;}
			//si le score est supérieur à un des dix meilleurs,
			//on enregistre l'indice dans la variable position
			if(position!=10){ //s'il fait partie des dix premiers
				for(i=9;i>position;i--)best[i]=best[i-1];
				//on décale les autres scores du tableau
				cout<<"Tu fais partie des meilleurs joueurs!\n";
				cout<<"Tape ton nom: ";cin>>best[position].nom;
				//on enregistre le nom au bon endroit...
				best[position].score=pts; //et le score
			}
			f=fopen("bestscores.wep","w");
			//on ouvre le fichier des meilleurs scores en écriture
			fwrite(best,sizeof(joueur),10,f);
			//et on y enregistre le tableau best
			fclose(f);
			getch();
			clrscr();
		}
		if(choix1==2){
			clrscr();
			f=fopen("bestscores.wep","r");
			//on ouvre le fichier des meilleurs scores en lecture
			if(f==NULL)cout<<"Aucun meilleur score"<<endl;
			else{
				cout<<"= = MEILLEURS SCORES = =\n\n";
				fread(best,sizeof(joueur),10,f);
				fclose(f);
				for(i=1;i<11;i++){
					cout<<i<<") ";
					if(i!=10)cout<<" ";
					cout<<best[i-1].nom<<"  "<<best[i-1].score<<endl;
				}
				//s'il existe, on lit et affiche les noms et scores
			}
			getch();
		}
		if(choix1==3)aide();
		clrscr();
	}while(choix1!=4);
} 

 Conclusion

Voilà, c'est mon dernier et mon plus beau prog, autant dans la syntaxe que dans l'interface, alors j'espère qu'il vous plaira...
Au fait, l'ouverture de mon site avec Lambda.Man aura un peu de retard, mais sera sans doute ouvert fin juin 2002!! Venez nombreux!!
http://lambda.man.free.fr  

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip COMMANDES MS-DOS (VISUAL C++)
CORRECTION DE LA FONCTION STRCMP(...) (VISUAL C++)
QUEL JOUR SOMMES-NOUS?? (VISUAL C++)
Source avec Zip ECHECS (VISUAL C++)
Source avec Zip PUISSANCE 4 (VISUAL C++)

 Sources de la même categorie

Source avec Zip Source avec une capture JEU DES CARTES par eapaceinfo
PROGRAMME DE JEU DE MPT par KerizGarmm
Source avec Zip Source avec une capture JEUX SERPENT par antho974
Source avec Zip Source avec une capture PENDU EN SDL par Damsou91
Source avec Zip STATE MACHINE MODIFICATION MATH BUCKHAM par billybones79

Commentaires et avis

Commentaire de vanpet le 08/07/2002 19:58:06

nice !
7/10

Commentaire de temoin le 27/07/2003 18:56:13

pas mal ton exe marche mais tes source je n'arrive a les compiler 26 erreur qu'il dit  8/10

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales