Jeu des cartes en C++

Fermé
pink - 14 janv. 2009 à 13:52
 mostafameknes - 21 déc. 2009 à 18:02
Bonjour,
si quelqu'un peut me donner une idée sur un projet de jeu des cartes
de quoi je vais commencer voila l'énnoncé :

L’objectif de ce projet est de réaliser un programme permettant de gérer une partie de carte correspondant
à une bataille. Dans notre cas, une bataille est une partie simplifiée s’effectuant avec 52 cartes et se jouant
à deux joueurs; chaque joueur étant muni de 26 cartes; ces 26 cartes correspondant à ce que nous appelons
une main. Une partie de bataille se déroule de la façon suivante : chaque joueur tire/extrait une carte de sa
main et la compare à celle tirée par l’autre joueur. Celui qui tire la carte la plus forte marque un point.
Notons que si les deux joueurs ont tiré une carte de même valeur, alors le score reste inchangé et le jeu se
continue avec un nouveau tirage. Ce processus se réitère jusqu’à ce qu’un des joueur n’ait plus de cartes.
Notez que pour vous aider à implémenter ce jeu de carte, nous vous donnons ci-dessous quelques
indications concernant les classes, les méthodes et attributs à implémenter. Toutefois, vous êtes libre
d’implémenter d’autres classes, méthodes ou attributs.
1 Tout d’abord : les cartes
Une carte est caractérisée par une couleur (carreau, trèfle, coeur, pique) et une valeur (1, 2, 3, ..., 10, valet,
reine, roi). Afin de créer la classe carte, effectuez les actions suivantes :
– créer un ou plusieurs constructeurs (selon vos besoins),
– un destructeur associé,
– créer les méthodes/opérateurs permettant de comparer deux cartes entre elles. Deux cartes sont
identiques si elles ont la même valeur. Les cartes sont ordonnées de la façon suivante :
1<2<3<4<5<6<7<8<9<10<valet<reine<roi. Notez que :
- (i) un as est inférieur à la valeur 2,
- (ii) la couleur d’une carte n’est pas pris en compte pour définir l’ordre des cartes.
– une méthode permettant d’afficher la valeur et la couleur d’une carte.
2 Un paquet de cartes
Un paquet de carte correspond à un ensemble de cartes. Rappelons qu’initialement, un paquet contient 52
cartes. Cette classe contient les méthodes suivantes :
– un ou plusieurs constructeurs (selon vos besoins),
– un destructeur,
– la méthode trier qui permet de trier un paquet de carte par ordre croissant sans distinction de couleur,
– la méthode mélanger qui mélange le jeu de carte,
– la méthode split qui sépare un jeu de carte en deux sous-paquets de taille égale.
3 La main
La classe main est une classe constituée de 26 cartes. Cette classe contient les méthodes suivantes :
– un ou plusieurs constructeurs (selon vos besoins),
– un destructeur,
– la méthode tirer aléatoirement qui permet de tirer/extraire une carte de la main,
4 Le joueur
Écrire la classe joueur. Un joueur est caractérisé par son prénom, un score (initialement = 0), et est
initialement muni d’une main constituée de 26 cartes. Cette classe contient les éléments suivants :
– un constructeur et son destructeur associé,
– une méthode permettant d’incrémenter le score du joueur,
– une méthode permettant d’afficher le score du joueur.
5 La partie de jeu
Définir la classe partie qui gère une partie (c’est-à-dire la bataille). Vous créerez cette classe et définirez
un constructeur et un destructeur. Puis, vous définirez la méthode bataille qui gère une partie de bataille
entre deux joueurs, afficher le score final de chaque joueur et le vainqueur de la partie.
6 Le programme principal
Dans votre main, vous créerez tous les éléments nécessaires pour qu’une partie de bataille ait lieu.
7-Evaluation
En plus de la présentation, vous devez rendre les fichiers sources et un rapport sous format Word.
7.1 Critères d'évaluation du programme
Les critères suivants seront notés, par ordre d'importance décroissante :
• la qualité de la conception orientée objet
• la qualité des commentaires. Les commentaires doivent expliquer le sens de chaque bloc
de code, ils sont adressés à un lecteur qui essaie de comprendre votre programme. Les
commentaires ne doivent pas répéter ce qu'il y a dans le code. Les commentaires ne
doivent pas expliquer les éléments syntaxiques, mais plutôt la sémantique.
• la lisibilité du code : choix des noms de classes, des membres, des variables et des
fichiers. Votre programme doit être proprement divisé en plusieurs fichiers. Faites
attention à l'indentation.
• le résultat et les fonctionnalités du programme.

je veux just savoir d'ou commencer
A voir également:

8 réponses

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
16 janv. 2009 à 08:53
?????????
Au secours, les martiens nous envahissent ! ils n'ont plus peur d'user de leur langage secret devant nous.
3
pink....
#include<iostream>
using namespace std;
class kikikiki
hhhhhhhhhhhhhhhhhhhhh
hhhhhhhhhhhhhhhhhhhhhhhhhhh
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
system("pause");
}
c comme ça que tu vas commencer
si tu n'as pas compris,n'hésité pas à mon contacter a hahaha_j9ayliya@hotmail.com
1
voila la soulution
Class Carte{
.........
.............
.............};
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
14 janv. 2009 à 14:06
je ne vois pas ce que tu veux de plus, tout est dans l'énoncé !
1 faire une classe carte
2 une classe paquet
0
lah yssehel
o inchaalal le jeudi 22 janvier,salle28 ,bloc 4 .Tu trouvera la solution de ton probleme
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
darha weld 7lima tsalaw likom dertou l commentcamarche
li bgha lhel ywejed 1000 dh o yji 3endi nhar jem3a tankoun f buvet
labes serwal 9o9i o trebicha o daymen tanemdegh meska
0
ila mal9itounich laghiw lya f mon tel olla laghiw l 2M
0
mon tel est +212 0 lgh lgh 0 lgh lgh
0
gha tebday b
class carte
{
}
ghir tsaliha gha diri
class paquet
{
}

class hand
{
}

class joueur
{
}
class bataille
{
}
men be3d gha diri main

fach tsalih heteh lina nestafdou hta hna
ra ma 3refna mnin nebdaw
merci ++
hta hna ra 3edna nefs sujet f lp kenitra merci bcq
0
la meilleur solution c ke tu appelles "MOKHTAFOUN" :D:D
MA3REFTIHCH?
RAH D 2M
et tu vas retrouver inchaalah tous les classe
iwa bne chance
ah j'ai oublié
,quand tu trouves tes classes chéries ,n'oublie pas de me remercier
hh
hhhh
hhhhhh
hhhhhhhhh
hhhhhhhhhhhhhhh
hhhhhhhhhhhhhhhhhhhhhh
hhhhhhhhhhhhhhhhhhhhhhhhhhhhh
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
0
MRAD Messages postés 86 Date d'inscription mardi 21 octobre 2008 Statut Membre Dernière intervention 17 avril 2009 4
16 janv. 2009 à 11:19
c de l'arbe marrcain je croi... behhhhhhhhhhhh c grave...!!!loooooooooooool
0
mostafameknes
21 déc. 2009 à 18:02
dsl pour que des gens parle arabe voici le solution de votre problem:

#ifndef CARTE_H
#define CARTE_H


class Carte
{
int valeur;
int couleur;
public:
Carte(){valeur=0;couleur=0;}//constructeur par defaut
Carte(const Carte& ct)//constructeur par recopie
{
this->valeur=ct.valeur;
this->couleur=ct.couleur;
}
int compare(Carte& ct)
{
if(this->valeur > ct.valeur) return 1;//si la premier carte superieur au 2 eme
else if(this->valeur < ct.valeur) return 2;//si la premier carte inferieur au 2 eme
else return 0;//il sont egaux
}
void setvaleur(int val)//accesseur en ecriture sur valeur
{
this->valeur=val;
}
void setcouleur(int coul)//accesseur en ecriture sur couleur
{
this->couleur=coul;
}
int getvaleur()//accesseur en lecture sur valeur
{
return valeur;
}
int getcouleur()//accesseur en lecture sur valeur
{
return couleur;
}
void echange(Carte& ct)//echanger deux carte
{
Carte aide=*this;//en creer une carte aide pour enregistrer la premier carte
valeur=ct.valeur;//en affecte la valeur de 2 carte à la 1
couleur=ct.couleur;// en affecte la couleur de 2 carte à la 1
ct=aide;//en recopie la 2 carte dans la premier
}
// class destructor
~Carte(){}//c'est le compilateur qui choisie le destructeur
};

#endif // CARTE_H


#ifndef HAND_H
#define HAND_H

/*
* catte class representer une main qui ce caracterise par une liste du cartes
*/
class Hand
{
Carte listcarte[26];
int nb_carte;
public:
// constructeur par defaut
Hand()
{
this->nb_carte=26;//au debut en met le nombre carte du carte sur une main(hand) a 26
}
// constructeur par recopie
Hand(const Hand& h)
{
this ->nb_carte=h.nb_carte;
for(int i=0;i<26;i++) listcarte[i]=h.listcarte[i];
}
void setlist(Carte* t)//accesseur en ecriture sur la liste des cartes
{
for(int i=0;i<26;i++)
{
listcarte[i]=t[i];
}
}
Carte& tirer()//pour tirer une carte de la main
{
int indice = rand()%(this->nb_carte);//choisir un indice entre 0 et le nombre du carte
Carte *ct=new Carte(listcarte[indice]);//en memoirise la carte a tirer
decaler(indice,nb_carte);//decaler la liste des carte
listcarte[nb_carte-1]=*ct;//en met la carte a tirer a la fin
nb_carte--;//decrementé le nombre du carte sur la main
return listcarte[nb_carte];//retourner la carte choisie
}
/*
methode pour decaler la liste des carte
apres un tirer du carte de la main
*/
void decaler(int debut,int fin)//
{
//debut: la position du carte tirer
//fin :position du dernier carte sur la main
for(int i=debut;i<fin;i++)
{
listcarte[i]=listcarte[i+1];
}
}
int getnb_carte(){return nb_carte;}//accesseur en lecture sur le nombre du carte reste dans la main
Carte& getcarte(int pos){return listcarte[pos];}
// class destructor
~Hand(){delete[] listcarte;}//destructeur
};

#endif // HAND_H




#ifndef PAQUET_H
#define PAQUET_H
#include"carte.h"
#include"hand.h"
using namespace std;
/*
* paquet qui representer l'ensemble du cartes(le paquet)
*/
class Paquet
{
Carte carte[52];

public:
// constructeur par defaut
Paquet()
{
int i=0;
for (int coul=0; coul<4; coul++)//0 à 3 (carreau, trèfle, coeur, pique)
for (int val=0; val<13; val++)// 1 à 10 + valet,reine, roi
{
carte[i].setvaleur(val);
carte[i].setcouleur(coul);
i++;
}
}
void trier()
{
for(int i=0;i<51;i++)
{
for(int j=i+1;j<52;j++)
{
if(this->carte[i].getvaleur()>this->carte[j].getvaleur())
{
// permuter les deux carte
carte[i].echange(carte[j]);
}
}
}
}
// Melanger l'ensemble du cartes
void melanger()
{
int indice;
int pos=52;
for(int i=0;i<52;i++)
{
indice = rand()%(pos);//en prendre un indice d'une carte aux hasard
//permutation du 2 carte
carte[indice].echange(carte[pos-1]);//en remplace la carte du l'indice par le dernier carte
pos--;// en decrement la fin du paquet pour ne pas melanger la carte choisie encore une foix
}
}
// couper le paquet en deux sous paquet
void split(Hand& h1,Hand& h2)
{
Carte list1[26],list2[26];//en creer deux pointeur de list de carte
int a=0;
// en fais la distibution du paquet sur deux list
for(int i=0;i<26;i++)
{
list1[i]=carte[a];
a++;
list2[i]=carte[a];
a++;
}
h1.setlist(list1);//affectation du la list
h2.setlist(list2);//affectation du la list
}
Carte getcarte(int pos)//retourne la carte dans la position pos
{
return carte[pos];
}
// class destructor
~Paquet(){delete[] carte;}//destructeur
};

#endif // PAQUET_H



#ifndef JOUEUR_H
#define JOUEUR_H

/*
* le joueur
*/
class Joueur
{
char *prenom;
Hand hand;
int score;
public:
// constructeur par defaut
Joueur()
{
this->score=0;//en in initialise le score du joueur par 0 au debut
}
void setprenom(char *nom)//accesseur en ecriture sur le prenom
{
prenom=new char[strlen(nom)+1];//allouer le chmps prenom par un tableau du caractereau taille du argument nom
strcpy(this->prenom,nom);//copie le nom vers prenom
}

void sethand(Hand& h)//accesseur en ecriture sur hand
{
this->hand=h;
}

Hand& gethand(){return hand;}//accesseur en lecture sur hand

void increment()// incrementer le score du joueur
{
this->score++;
}

char *getprenom(){return prenom;}//accesseur en lecture sur le prenom

int getscore(){return score;}//accesseur en lecture sur le score

~Joueur(){delete [] prenom;}
};

#endif // JOUEUR_H


#ifndef BATAILLE_H
#define BATAILLE_H
#include"paquet.h"
#include"joueur.h"
#include"graphique.h"
/*
* cette class permet de gerer une partie netre deux joueur
*/
class Bataille
{
Paquet pq;
public:
// constructeur par initialisation
Bataille(Paquet& pq)
{
this->pq=pq;
}

//methode qui gere une partie entre deux joueur
void combat(Joueur& j1,Joueur& j2);

~Bataille(){}//destructeur
};

#endif // BATAILLE_H



pour voir le solution complete je vs invite a voir mon source sur cppfrance

https://codes-sources.commentcamarche.net/

n'oublier pas a laisser vs commentaire

a+
0