Compilation, pointeur & références Spécificités du C++ Classes en C++ Fraction de nombres complexes Constructeur & destructeurs Surcharge d'opérateur Polymorphisme & classe abstraite Jeu du blackjack
Retour menu principal

Jeu du blackjack


Le but de TD est de programmer une partie de blackjack pour ensuite simuler un grand nombre de parties et (peut-être) trouver le moyen de perdre le plus lentement possible son argent au casino.

Règles du jeu

Chaque joueur joue contre le croupier, (qui représente la banque, ou le casino) et non contre les autres joueurs.

But du jeu

Après avoir reçu deux cartes, le joueur tire des cartes pour s’approcher de la valeur 21 sans la dépasser. Le but du joueur est d’obtenir un total de points supérieur à celui du donneur sans dépasser 21.

Valeurs des cartes au blackjack

Chaque carte numérotée de 2 à 10, a sa valeur nominale (égale au numéro sur la carte). Les valets, les dames et les rois (les figures), ont une valeur de 10 points : ces cartes sont appelées des bûches par les compteurs de cartes. L’As vaut 1 point ou 11 points, selon ce qui arrange au mieux le joueur : une sorte de “joker”. La meilleure combinaison possible est le blackjack, à savoir la valeur 21 obtenue avec deux cartes (AS + FIGURE). Dans ce cas précis, le paiement se fait automatiquement à 3:2, le joueur emporte 1,5 fois sa mise.

Le jeu de blackjack

Les joueurs placent leurs mises avant que le croupier ne distribue les cartes. Le donneur distribue deux cartes visibles à chaque joueur et deux cartes à lui-même, une visible, l’autre cachée (retournée).

Faire un blackjack : Il y’a blackjack lorsque un joueur reçoit 2 cartes totalisant une valeur de 21 lors de la première donne (un As et un 10 ou une figure). C’est la meilleure main que l’on puisse avoir, le joueur gagne une fois et demi sa mise initiale. Si un joueur a un blackjack, le croupier paiera le joueur immédiatement avant de continuer avec les autres joueurs de la table.

Le tour des joueurs : Après avoir reçu vos deux premières cartes et que tous les blackjacks de la table ont été payés, Un joueur peut rester ou tirer une nouvelle carte. Après avoir reçu une troisième carte, le joueur peut s’arrêter ou en demander une nouvelle et ce, autant de fois qu’il le souhaite à condition qu’il ne dépasse pas un total de 21 (auquel cas, il perd).

Le tour du croupier : Le croupier est le dernier joueur à agir. Une fois que tous les joueurs ont joué, le croupier montre sa carte cachée, révélant ainsi la valeur en cours de sa main et il continue de jouer sa main comme tout joueur. Le croupier doit continuer de tirer jusqu’à qu’il ait une valeur d’au moins 17, il restera alors.

Si le croupier a une valeur totale de 16 ou moins, il doit tirer des cartes additionnelles pour tenter d’avoir une valeur entre 17 et 21. Si le croupier dépasse 21, tous les joueurs qui sont en lice gagnent. Sinon, les joueurs qui ont un total supérieur à celui du donneur gagnent et les joueurs qui ont un total inférieur perdent. En cas d’égalité, la mise du joueur est remboursée (l’argent ne change pas de main). Une fois que toutes les mains ont été payées ou que les mises ont été encaissées, une nouvelle donne peut avoir lieu.

Programmation

Créer une classe Banquier qui possède comme membres:

  • un entier PremiereCarte,
  • un entier Score,
  • un pointeur de double qui contiendra un tableau de l’évolution des gains ou des pertes de la banque,

ainsi que :

  • un constructeur,
  • un destructeur,
  • les méthodes Get et Set nécessaire,
  • une méthode pour générer une nouvelle partie,
  • une méthode débutant la partie et en inspectant les blackjacks,
  • une méthode demandant à chaque joueur de tirer des cartes ou non,
  • une méthode simulant la fin de partie où la banque joue puis répartit les gains.

La classe Banquier doit être amie (friend) de la classe joueur.

Créer une classe Joueur qui possède :

  • un entier Score,
  • un pointeur de double qui contiendra un tableau de l’évolution des gains ou des pertes du joueur,
  • un entier Mise,
  • un booléen EnJeu,
  • une énumeration qui répertoriera plusieurs types de jeu possibles i.e. enum TypeDeJeu{PRUDENT, NORMAL, RISQUE},

et devra disposer des méthodes suivantes :

  • un constructeur,
  • un destructeur,
  • les méthodes Get et Set nécessaires,
  • une méthode Mise qui selon le TypeDeJeu du joueur mise une somme au départ,
  • une méthode Jeu qui selon le TypeDeJeu du joueur et ce que la banque à tirer comme première carte décide de tirer ou non des cartes supplémentaires.