crhistophe
-
9 nov. 2004 à 21:22
choubaka
Messages postés39378Date d'inscriptionjeudi 4 avril 2002StatutModérateurDernière intervention13 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 :
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) :
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.
*/
9 nov. 2004 à 21:33
9 nov. 2004 à 22:57
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...