IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Comparer des Cartes ( Jeu de carte )


Sujet :

avec Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Points : 3
    Points
    3
    Par défaut Comparer des Cartes ( Jeu de carte )
    Bonjour,

    Je suis un étudiant et je débute en Java.
    Je suis en train de réaliser un jeu de poker, tout va bien sauf pour la comparaison des cartes.
    (Je précise avant de continuer que j'ai passé 2 heures à chercher et lire des forums avant de poster )

    Donc voici comment sont identifiées mes cartes :

    Chaque carte est un objet, qui a un numéro identifiant sa figure et un numéro identifiant son numero.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Carte carte1 = new Carte(1,11); 
    //1 représente les coeurs et 11 le Valet.

    Donc j'ai crée une fonction pour comparer les cartes et ajustée la mise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public static int miseAjustee( Carte c1, Carte c2, Carte c3, Carte c4, int miseJoueur)
    {
     
    }
    La manière la plus évidente qui vient à l'esprit avec les connaissances qu'on a est de faire un gros paquet de if else if pour comparer les numéros des cartes.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( numCarte1 == JeuCartes.VALET & numCarte2 == JeuCartes.VALET & ............ )
    Sachant que JeuCartes.VALET est une constante qui est egale à 11.

    Ou bien utiliser un switch, mais le probleme c'est que ce serait trop long de lister toutes les combinaisons de cartes possibles !

    Je ne vois vraiment pas ce que je peux faire dans ce cas là.

    Je vous remercie d'avance.

  2. #2
    Membre confirmé
    Homme Profil pro
    Ed Nat
    Inscrit en
    Janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ed Nat
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 325
    Points : 559
    Points
    559
    Par défaut
    Bonjour,
    ta demande manque de clarté :

    je ne vois pas du tout ce que la méthode
    public static int miseAjustee( Carte c1, Carte c2, Carte c3, Carte c4, int miseJoueur)
    est sensée faire, compte tenu de son nom, et des paramètres passés...

    Peux-tu donner une description complète de ce que doit faire cette méthode (description générale), des paramètres passés, et de la valeur de retour...
    comme si tu rédigeais la javadoc...

    Autre remarque : une méthode ne doit faire qu'une seule chose (et bien si possible) => ce qui permet de la nommer correctement en fonction de ce qu'elle réalise.
    J'ai comme un gros doute sur le nombre de choses que pourrait faire ta méthode...
    Il ne faut pas hésiter à découper la méthode en plusieurs, ce qui facilitera l'implémentation, le débogage, et la cohérence fonctionnelle

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Désole si ce n'est pas assez précis.

    Ma fonction retourne la mise ajustée ( le nombre de crédit gagnes )
    Donc l'algorithme est :

    - Comparaison des cartes. (Mais comment, ça je sais pas)
    - calcul du nombre de crédit gagne selon le résultat de la comparaison (miseJoueur*30 si 4 as par exemple)
    -retourne le calcul précédent.

    Pour obtenir les numéro et les couleurs c'est :
    carte1.getnumero()
    carte1.getcouleur()

    Mon problème est comment comparer les cartes. Car en faisant des if ou des else, il y a trop de combinaisons possible.

    Merci.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Ben tu commences par vérifier si tu as plusieurs cartes de mêmes valeur, sans t'intéresser à quelle est cette valeur.

    Et si oui, bah, tu retiens combien de cartes et quelle est cette valeur.

    À partir de là tu utilises cette valeur et le nombre de cartes qui l'ont, pour faire ton ajustement.

    Cela n'a rien à voir avec Java.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Homme Profil pro
    Ed Nat
    Inscrit en
    Janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ed Nat
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 325
    Points : 559
    Points
    559
    Par défaut
    Ce n'est effectivement pas un problème java, mais une histoire de conception Objet.

    Il ne faut pas partir sur une seule grosse méthode à la vocation de "méthode à tout faire", et faire de la programmation procédurale !

    Fonctionne et raisonne par problèmes élémentaires.
    Dans ton jeu, tu as une main de 4 cartes (probablement 2 classes différentes, Main et Carte)

    Dans la classe Main, il te faudra certaines méthodes...
    • getPaires
    • getFull
    • getBrelan
    • getCarre
    • ...


    La méthode getPaires teste l’existence de paires et retourne une valeur correspondante (1 paire d'As et une paire de Dames aura une certaine valeur (à déterminer), qu'il te faudra comparer avec la valeur d'une paire de 10 et d'une pair de valets par ex)

    Ca n'est qu'une idée de conception, pas une obligation...
    L'essentiel est de retenir l'idée suivante et déjà énoncée :
    pas de grosse méthode unique de comparaison d'on ne sait pas quoi...

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup pour vos réponses.

    Effectivement ça n'a rien a voir avec Java, c'est un problème de conception je n'arrivais pas a me faire un algorithme. Mais je me suis dit qu'il y a peut etre des méthodes spéciales en java pour me permettre de faire ce genre de chose ( on ne sait jamais ).

    Je vais essayer l'algorithme a thelvin en me créant un tableau de mes 4 cartes et faire une boucle qui le parcoure en vérifiant si il y a des cartes de même figure/couleur.
    Et je vais aussi suivre vos conseils à propos des fonctions/procédures, j'ai tendance à regrouper beaucoup de chose.

    Merci encore.

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 398
    Points : 710
    Points
    710
    Par défaut
    Citation Envoyé par skini26 Voir le message
    Merci beaucoup pour vos réponses.

    Effectivement ça n'a rien a voir avec Java, c'est un problème de conception je n'arrivais pas a me faire un algorithme. Mais je me suis dit qu'il y a peut etre des méthodes spéciales en java pour me permettre de faire ce genre de chose ( on ne sait jamais ).

    Je vais essayer l'algorithme a thelvin en me créant un tableau de mes 4 cartes et faire une boucle qui le parcoure en vérifiant si il y a des cartes de même figure/couleur.
    Et je vais aussi suivre vos conseils à propos des fonctions/procédures, j'ai tendance à regrouper beaucoup de chose.

    Merci encore.
    Salut,

    j'ai fait ça l'an passé, http://provenza24.free.fr/pulpcore/Poker/
    avec espace tu distribues les cartes, avec F1, F2, F3, F4, F5 tu choisis les cartes a garder, avec espace tu changes les cartes
    et ainsi desuite

    pour t'aider, faudrait que tu commences par nous dire quel type de poker c'est !!! parce que j'avais réfléchi au poker fermé à 5 cartes (comme je l'ai fait à l'adresse donnée) puis au Hold'em, ce sont 2 approches totalement différentes, et tu modéliseras pas de la même façon !
    par contre je ne connais pas de poker se jouant à 4 cartes lol

    si la petite démo correspond à ce que tu recherches, je peux te dire 2-3 conseils et te donner les sources pourquoi pas pour que tu regardes comment j'ai fait ca

    bon courage

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/04/2010, 20h57
  2. [VB] Recrutement pour un Jeu de cartes WHIST
    Par Vesta dans le forum Projets
    Réponses: 5
    Dernier message: 13/09/2005, 19h43
  3. Filtrage des paquets de la carte réseau
    Par sommerset dans le forum Réseau
    Réponses: 3
    Dernier message: 15/06/2005, 10h38
  4. IA avec un jeu de cartes
    Par Captain_JS dans le forum Intelligence artificielle
    Réponses: 3
    Dernier message: 07/02/2005, 10h07
  5. Disparition des textures sur certaines cartes 3D
    Par Francky033 dans le forum DirectX
    Réponses: 1
    Dernier message: 01/10/2004, 05h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo