Aider a resoudre un jeu de carte en java

Fermé
crhistophe - 9 nov. 2004 à 21:22
choubaka Messages postés 39378 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 13 mai 2024 - 10 nov. 2004 à 07:26
But : Le but du présent travail est de vous faire faire des méthodes permettant de découper un problème en sous-problèmes. Votre classe devra comprendre des méthodes en plus de la méthode main qui appellera les autres méthodes (ou certaines d'entre elles) de votre classe.

Énoncé : Le programme que vous devrez concevoir permet à son utilisateur de parier un certain montant d'argent sur le résultat d'un jeu de hasard. Ce jeu consiste à faire piger deux cartes d'un jeu de cartes standard par l'ordinateur et de parier sur ces deux cartes. Les paris qui peuvent être faits sont les suivants :

1. Les deux cartes pigées forment une paire (exemple : une paire de valets).
2. Les deux cartes pigées sont de la même couleur (aux cartes, il y a 4 couleurs possibles (et non deux) : coeur, carreau, trèfle ou pique).
3. Les deux cartes forment une séquence, c'est à dire, deux cartes qui se suivent (exemple : un 2 et un 3, un valet et un 10). Le couple as et roi forme une séquence ainsi que as et 2.

Au début du programme, celui-ci demande au joueur un nombre pour initialiser le procédé aléatoire pour pouvoir choisir au hasard des cartes. Puis, il lui demande le montant initial qu'il a en sa possession. Ensuite, il lui demande s'il désire jouer une partie. Dans l'affirmative, il demande au joueur sur quel résultat il veut parier (1, 2 ou 3) et ensuite combien il veut parier (entre 0 et le montant dont il dispose). Ce montant est donc soustrait du montant dont il dispose. Ensuite, l'ordinateur pigera deux cartes, et donnera les résultats. S'il a gagné le pari 1, le joueur reçoit 4 fois sa mise, le pari 2, 2 fois sa mise et le pari 3, 1 fois sa mise (autrement dit il ne perd ni ne gagne rien). Le programme affiche premièrement les deux cartes qu'il a pigé, ensuite si le joueur a gagné ou perdu son pari et le montant qu'il a gagné s'il y a lieu. Enfin, il affiche le montant dont dispose le joueur.

Si le joueur n'a plus d'argent, le programme se termine. Sinon, le programme lui demande à nouveau s'il désire jouer une partie et ainsi de suite.


Exemples d'exécution :

Exemple 1

Entrez un nombre entier pour initialiser le jeu : 55

Entrez le montant dont vous disposez : -200
*** Le montant doit etre superieur a 0 : 200

Voulez-vous jouer une partie ? k
*** vous devez repondre par o ou n : o

Quel pari voulez-vous faire ?
1 : paire, 2 : sequence, 3 : meme couleur => 4
*** vous devez repondre par 1, 2 ou 3 : 2

Entrez le montant de la mise ( maximum : 200 ) : -50
*** Le montant doit etre entre 0 et 200 : 250
*** Le montant doit etre entre 0 et 200 : 50

Voici la premiere carte : valet carreau
Voici la deuxieme carte : dame trefle

Bravo ! Vous avez gagne 100 $

Vous disposez maintenant de 250 $

Voulez-vous jouer une partie ? o
Quel pari voulez-vous faire ?
1 : paire, 2 : sequence, 3 : meme couleur => 1

Entrez le montant de la mise ( maximum : 250 ) : 60

Voici la premiere carte : 9 carreau
Voici la deuxieme carte : dame carreau

Desole ! Vous avez perdu votre mise !

Vous disposez maintenant de 190 $

Voulez-vous jouer une partie ? n

Merci d'avoir joue avec moi !
Vous quittez avec 190 $ en poche.

Exemple 2

Entrez un nombre entier pour initialiser le jeu : 9876543

Entrez le montant dont vous disposez : 100

Voulez-vous jouer une partie ? o

Quel pari voulez-vous faire ?
1 : paire, 2 : sequence, 3 : meme couleur => 1

Entrez le montant de la mise ( maximum : 100 ) : 100

Voici la premiere carte : 6 carreau
Voici la deuxieme carte : 4 coeur

Desole ! Vous avez perdu votre mise !

Vous disposez maintenant de 0 $

Vous n'avez plus d'argent, vous ne pouvez continuer.

Merci d'avoir joue avec moi !
Vous quittez avec 0 $ en poche.


Aide : Vous devrez utiliser la classe JeuDeCartes qui vous est fournie. Elle vous permet de piger aléatoirement des cartes d'un jeu de 52 cartes. Chacune des 52 cartes seront codées par les nombres entiers de 0 à 51 de la façon suivante :

0, 1, 2, ..., 11, 12 : Les coeurs © : as, deux, trois, ..., dix, valet, dame, roi.
13, 14, 15, ..., 24, 25 : Les carreaux ¨ : as, deux, trois, ..., dix, valet, dame, roi.
26, 27, 28, ..., 37, 38 : Les trèfles § : as, deux, trois, ..., dix, valet, dame, roi
39, 40, 41, ..., 50, 51 : Les piques ª : as, deux, trois, ..., dix, valet, dame, roi

Exemples : la carte numéro 7 correspond au 8 de coeur, la carte 20 correspond au 8 de carreau, la carte 40 correspond au 2 de pique. Donc, si vous avez un nombre entre 0 et 51 vous pouvez facilement connaître sa couleur (coeur, carreau, trèfle ou pique (ou 0, 1, 2 ou 3)) ainsi que sa valeur (as, deux, ..., roi). Il vous suffit d'utiliser la division entière et le reste après division par 13. (Voir plus loin plour plus de détails.

Voici les méthodes publiques disponibles dans cette classe :

public static void initialiserJeuDeCarte ( int germe ) {

/*
* antecedent : -
* consequent : Initialise le processus aleatoire. Un meme germe generera
* les memes cartes
*/

public static int pigerDeuxCartes () {

/*
* antecedent : -
* consequent : retourne un nombre correspondant a deux cartes differentes
* pigees aleatoirement dans un jeu de 52 cartes (numerotees
* de 0 a 51). Les deux premiers chiffres du nombre
* correspondent a la premiere carte, les deux derniers
* correspondent a la deuxieme.
* Exemple : 450 => 0450 => 04 et 50 => la carte numero 4 et
* la carte numero 50.
*/

La méthode initialiserJeuDeCarte doit être appelée (une seule fois) au début de votre programme (méthode main) avec une valeur choisie par l'utilisateur de votre programme. Ceci permettra de pouvoir générer les mêmes cartes à chaque exécution du programme. Ceci facilite la mise au point du programme. En donnant un germe de 96, les piges de deux cartes seront les suivantes (ceci peut vous aider pour faire vos jeux d'essais) :

as trefle dame trefle
9 trefle 8 carreau
10 pique 8 coeur
9 trefle 9 pique
3 trefle 9 carreau
7 coeur as coeur
10 carreau 3 carreau
6 carreau valet coeur
9 trefle 10 carreau
10 trefle 2 carreau


La méthode int pigerDeuxCartes sera appelée toutes les fois où votre programme doit faire piger deux cartes par l'ordinateur. Celle-ci retourne ces deux cartes. Ensuite, vous devez "séparer" cette information pour avoir les deux cartes. Par exemple, si la valeur retournée par la méthode est 2917, la première carte pigée est 29 (2917 / 100) et la deuxième, 17 (2917 % 100). Vous pouvez ensuite déterminer la couleur (coeur, carreau, trèfle ou pique) en utilisant la division entière par 13 et déterminer la valeur de la carte en utilisant le reste après division par 13 :

29 / 13 donne 2 et 29 % 13 donne 3, donc 29 correspond à la carte 4 de trèfle,
17 / 13 donne 1 et 17 % 13 donne 4, donc 17 correspond à la carte 5 de carreau.

Vous n'avez pas besoin d'appeler la méthode alea. Elle est privée puisqu'elle est utilisée par la méthode pigerDeuxCartes . C'est ce qu'on appelle une méthode utilitaire qui ne fait pas partie des services offerts par la classe JeuDeCartes.


Exigences logicielles, conseils et contraintes

1. Toutes vos méthodes doivent être des méthodes publiques de classe (public static).

2. Les différentes saisies et validations (lecture de oui/non, lecture du montant initial du joueur, lecture de la porte de pari, lecture du montant misé, etc ) doivent se faire chacune dans une méthode. Par exemple, l'entête de la méthode qui saisit et valide le montant de la mise serait :

public static int lireLaMise ( int max ) {

/* antécédent : max > 0
* conséquent : Saisit et valide un montant entre 0 et max inclusivement.
* La valeur retournée sera le montant saisi et validé.
* Si max <= 0, la valeur retournée sera -1
*/

3. Vous devrez avoir les méthodes suivantes et les appeler, soit de la méthode main, soit d'une autre méthode :

public static void afficherCarte ( int carte ) {

/* antécédent : 0 <= carte <= 51
* conséquent : Affiche la carte selon sa couleur et sa valeur
*/
...

public static boolean estUnePaire ( int carte1, int carte2 ) { ...

/* antécédent : 0 <= carte1 <= 51 et 0 <= carte2 <= 51
* conséquent : retourne vrai si carte1 et carte 2 constituent une paire,
* faux sinon
*/

public static boolean sontMemeCouleur ( int carte1, int carte2 ) { ...

/* antécédent : 0 <= carte1 <= 51 et 0 <= carte2 <= 51
* conséquent : retourne vrai si carte1 et carte 2 sont de la même
* couleur. Les 4 couleurs possibles sont : coeur, carreau,
* trèfle et pique.
*/

public static boolean estUneSequence ( int carte1, int carte2 ) { ...

/* antécédent : 0 <= carte1 <= 51 et 0 <= carte2 <= 51
* conséquent : retourne vrai si carte1 et carte 2 forment une séquence,
* peu importe leur couleur, faux sinon. Une séquence de
* deux cartes sont deux cartes de valeur consécutive. L'as
* et le 2 sont considérées comme consécutives ainsi que l'as
* et le roi.
*/

Merci d'avance!
A voir également:

2 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
9 nov. 2004 à 21:28
On doit rendre les copies pour quand?

Kilian, débutant en tâche de fond.....
0
pour le 12 de ce mois
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
9 nov. 2004 à 22:57
Bon, pour éviter de te faire attendre pour rien:
On ne peux pas faire tes devoirs à ta place!

Par contre tu peux toujours venir poser une question si tu coinces à un endroit précis...

Kilian, débutant en tâche de fond.....
0
choubaka Messages postés 39378 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 13 mai 2024 2 101
10 nov. 2004 à 07:26
c'est quoi la question?

Chouba,
Pochard d'assaut .. 
0