Projet rummikub

Disponible uniquement sur Etudier
  • Pages : 11 (2510 mots )
  • Téléchargement(s) : 0
  • Publié le : 23 mars 2011
Lire le document complet
Aperçu du document
ntroduction
Le but de ce projet et de concevoir, en C++, un programme simulant une partie de
Rummikub, un jeu de société basé sur les règles du Rami. Le Rummikub est un jeu de société pour
deux, trois ou quatre joueurs, qui se joue avec des jetons rectangulaires (tuiles). Les règles sont très
voisines du jeu de carte du Rami. Rummy signifie d'ailleurs « Rami » en anglais.
Il est aussi trèsproche par ses règles, mais aussi par son matériel, d'un jeu traditionnel turc appelé
Okey. Bien qu'il se joue avec des tuiles épaisses en plastique, on peut le classer dans la catégorie des
jeux de cartes traditionnels puisque ces tuiles représentent en fait comme au Rami deux jeux de 54
cartes, les cartes de Valets, Dame et Roi étant remplacées par des tuiles 11, 12 et 13.
Il y a un chevaletpar joueur pour ranger son jeu, et 106 tuiles avec deux critères : la valeur de 1 à
13 en double, et 4 couleurs. Deux tuiles sont des jokers.
Pour plus d'informations : http://fr.wikipedia.org/wiki/Rummikub
N.B : dans cette version les jokers ne sont pas gérés, il y a donc 104 tuiles.
Analyse
Pour réussir dans la programmation de ce projet, il a fallu au préalable étudier les différentespossibilités d'architecture du programme et imaginer les interactions homme-machine lors d'une
phase de jeu. Le jeu se joue au clavier (le développement d'une interface QT a été abandonnée en
raison de la complexité de mise en oeuvre) et chaque joueur se voit proposer des options
correspondant aux différentes possibilités qui s'offrent à lui lorsque c'est à son tour de jouer. Au
niveau de lastructure du code, l'intérêt est d'exploiter au mieux les possibilités offertes par la POO.
Il s'agit donc de former de façon judicieuse des classes et les relations entre les classes pour
fabriquer un programme stable, clair et correctement structuré pour pouvoir faire l'objet
d'optimisation futures.
Voici un diagramme de classe illustrant l'architecture générale du code :
Conception
Classe JeuC'est le noyau du code, toute la partie se déroule dans une méthode contenue dans Jeu et
toutes les autres classes interviennent en permanence autour de Jeu.
Fonction : organiser le déroulement d'une partie et les interactions homme-machine.
Cette classe gère le plateau de jeu, les actions des joueurs ainsi que les règles du jeu.
Cette classe va donc organiser globalement la chronologie desphases de jeu et agir
sur le plateau et les chevalets des joueurs.
Attributs :
● Table Plateau : La classe Jeu contient le plateau de jeu dans ses attributs afin
de pouvoir être la seule à agir sur ce dernier. Cette règle d'encapsulation
simplifie les actions sur le plateau puisqu'elles se déroulent toutes dans les
méthodes de Jeu.
● Regle Regles : La classe régissant les règles du jeu setrouve également en
attribut de Jeu. Ce choix est logique étant donné que sans Jeu les règles n'ont
pas d'utilité, il y a donc une relation de composition entre les deux classes.
Nous verrons dans la classe Regles que cette encapsulation est nécessaire car
elle est très souvent sollicitée dans Jeu.
● vector liste_joueurs : Ici est stockée la liste des joueurs. Le choix
d'utiliser un vecteurest justifié par la flexibilité offerte par ce type de
stockage. En effet il est facile de se déplacer dans les vecteurs et le statut de
pointeur est quasi-obligatoire tant les sollicitations de la classe Joueur sont
nombreuses.
● int nombre_joueurs : variable contenant le nombre de joueurs.
● vector Pioche : Comme les joueurs, la pioche est un vecteur de
tuiles. Encore une fois l'utilisationd'un vecteur s'avère particulièrement
intéréssante et facilite grandement les interactions avec la pioche.
● int nombre_pioche : variable contenant le nombre de tuiles dans la pioche.
Méthodes :
● void participants() : saisi protégée du nombre de joueurs.
● void ajout_joueur() : cette fonction rempli le vecteur liste_joueurs et effectue
la saisie du nom des joueurs.
● void creer_tuile()...
tracking img