#include #include #include #include #include // =================================================================== // Fonctions utilitaires int aleaMinMax(int inf, int sup); // =================================================================== // ========================================== DECLARATIONS DES CLASSES // =================================================================== // La classe "chaise" // ------------------ class chaise{ private: int PosCour; int PosMax; void beep(void); public: chaise(void); chaise(int initMax); chaise(int initCour, int initMax); void monter(void); void descendre(void); int getPosition(void); }; // La classe "PaquetDes" // --------------------- class PaquetDes { private: int valDeVert, valDeRouge; public: PaquetDes(void); PaquetDes(int v1, int v2); int rouge(void); int vert(void); void lancer(void); }; // La classe "Joueur" // ------------------ class Joueur { private: PaquetDes Des; chaise Place; long NbGains; public: Joueur(void); void joue(void); void afficher(void); }; // =================================================================== // ============================================================== MAIN // =================================================================== void main(void){ Joueur Denis; srand(time(NULL)); clrscr(); Denis.afficher(); for (int i = 0; i < 10; i++){ Denis.joue(); Denis.afficher(); if (i % 5 == 0) getch(); } getch(); } // =================================================================== // ========================================= DEFINITIONS DES FONCTIONS // =================================================================== // Les definitions des methodes associees a la classe "chaise" // ----------------------------------------------------------- chaise::chaise(void){ PosCour = 0; PosMax = 20; } chaise::chaise(int initMax){ PosCour = 0; PosMax = initMax; } chaise::chaise(int initCour, int initMax){ PosCour = initCour; PosMax = initMax; } void chaise::monter(void){ PosCour = (PosCour + 1 > PosMax) ? beep(), PosMax : PosCour + 1; } void chaise::descendre(void){ PosCour = (PosCour - 1 < 0) ? 0 : PosCour - 1; } void chaise::beep(void){ sound(135); delay(500); nosound(); } int chaise::getPosition(void){ return PosCour; } // Les definitions des methodes associees a la classe "PaquetDes" // -------------------------------------------------------------- PaquetDes::PaquetDes(void) { valDeVert = valDeRouge = 6; } PaquetDes::PaquetDes(int v1, int v2) { valDeVert = v1; valDeRouge = v2; } int PaquetDes::rouge(void) { return valDeRouge; } int PaquetDes::vert(void) { return valDeVert; } void PaquetDes::lancer(void){ valDeVert = aleaMinMax(1,6); valDeRouge = aleaMinMax(1,6); } // Les definitions des méthodes associees a la classe "Joueur" // ----------------------------------------------------------- Joueur::Joueur(void) : Place(10, 40), Des(3, 5), NbGains(20) { } void Joueur::joue(void){ Des.lancer(); if (Des.rouge() == Des.vert()) { Place.monter(); NbGains++; } else Place.descendre(); } void Joueur::afficher(void) { printf("\nHauteur de la chaise = %d.", Place.getPosition()); printf("\nValeur des des du joueur = %d et %d.", Des.rouge(), Des.vert()); printf("\nNombre de gains = %d.\n", NbGains); } // Definitions des fonctions utilitaires // ------------------------------------- /* ---------------------------------------------------- UTILITAIRES random */ int aleaMinMax(int inf, int sup){ return rand() % (sup - inf + 1) + inf; }