Jeu de poker: créer un deck avec java


Je travaille sur un projet de création d'un jeu de poker. Même si les instructions sont assez claires, j'ai tellement de problèmes avec la programmation orientée objet.

Donc pour ce projet, nous devons créer quatre objets, Carte, Deck, Main et Main de Poker. J'ai déjà fini de créer l'objet carte et je travaille maintenant sur l'objet deck. C'est la zone où j'ai des problèmes en ce moment. J'ai essayé de googler mon problème. Cependant, puisque je suis un débutant en programmation, je ne vraiment obtenir leurs méthodes. Par exemple, je ne sais pas comment utiliser ArrayList. Je ne connais que des méthodes de tableau très basiques.

Le code suivant est ce que j'ai fait jusqu'à présent pour l'objet Deck:

import java.util.*;

public class Deck {

    public static final int CARDS_IN_DECK = 52;
    public static final int SHUFFLE_SWAPS = 700;
    int shufflex = 0;

    private Card[] cards;
    private int card_holder;
    private int seed;

    public Deck(int seed) {
        this.cards = new Card[CARDS_IN_DECK];

        seed = 0;

        for (int i = 2; i <= 14; i++) {
            for (int j = 0; j <= 3; j++) {

                if (j == 0) {
                    cards[seed] = new Card(i, 'c'); // c = Clubs

                } else if (j == 1) {
                    cards[seed] = new Card(i, 'd'); // d == Diamond

                } else if (j == 2) {
                    cards[seed] = new Card(i, 's'); // s== Spade

                } else if (j == 3) {
                    cards[seed] = new Card(i, 'h'); // h = Heart
                }
                seed++;
            }
        }

    }

    public void shuffle(){
        Random rand = new Random ();
        int randomNumber = rand.nextInt(51);
        int randomNumber2 = rand.nextInt(51);

        while( shufflex < SHUFFLE_SWAPS ){

            HOW DO I DO THE SWAP HERE? DON'T KNOW THE SYNTAX
            I KNOW I NEED TO CREATE ANOTHER ARRAY TO TEMPORARY STORE THE FIRST CARD
            THEN I REPLACE THE FIRST CARD WITH THE SECOND CARD
            AND THEN REPLACE THE SECOND CARD WITH THE TEMPORARY CARD

            shufflex++;
        }
    }

    public Card nextCard() {

    }

    public String toString() {

    }
}

Et voici les descriptions de cette partie:

La classe Deck représente un jeu de 52 cartes à jouer. Nous allons utiliser un tableau d'objets de cartes pour gérer les cartes réelles dans le jeu.

Voici les champs de classe et d'instance, suivis des méthodes du Deck classe. Remplissez chaque article dans l'ordre suivant.

Constantes de classe

Déclare et initialise les constantes de classe statique publiques suivantes: CARDS_IN_DECK-Une valeur entière pour représenter le nombre de cartes dans le jeu. Réglez cette valeur égale à 52. SHUFFLE_SWAPS-Une valeur entière pour représenter le nombre de fois que les cartes doivent changer de position pendant le brassage de la plate-forme. Plus le nombre est élevé, plus le jeu sera aléatoire et soigneusement mélangé. Définissez cette valeur égale à au moins 500. Champs d'instance

Déclare les champs d'instance suivants: Un tableau d'objets de carte qui sera utilisé pour gérer les cartes CARDS_IN_DECK dans le paquet. Chaque élément du tableau est un objet Carte unique. Un entier qui contient l'index de la prochaine carte de la pile de Cartes. En note de côté, cette variable commencera à 0 et augmentera de 1 chaque fois qu'une carte est distribuée (voir méthodes ci-dessous). Une variable entière qui maintient la graine aléatoire prévue pour test. Méthodes

Voici la liste des méthodes que vous devez compléter.

public Deck(int seed) - C'est le constructeur de la classe Deck. Vous devez d'abord initialiser votre tableau d'objets de carte pour contenir 52 cartes en utilisant votre constante de classe " CARDS_IN_DECK."Une fois votre tableau initialisé, vous devez parcourir le tableau un élément à la fois et créer réellement un objet de carte. Toutes les cartes doivent être créées (valeurs 2-14 pour chacune des quatre couleurs), et il ne doit pas y avoir de doublons. Graine paramètre doit être stocké dans le champ de la semence. ASTUCE: l'Utilisation de la Carte.CLUBS, Carte.LOWEST_VALUE, etc. en ce constructeur.

public void shuffle() - Cette méthode permet de réinitialiser le deck pour qu'une nouvelle main soit jouée. Cette méthode doit gérer le brassage de la plate-forme en utilisant la classe aléatoire pour générer des nombres aléatoires. Vous devez générer aléatoirement deux entiers entre 0 et 51. Ensuite, vous devez échanger les cartes à ces deux postes. Par exemple, si les nombres aléatoires sont 20 et 11, et le 2 des clubs est dans l'élément 20 du tableau et le 3 des Cœurs est dans l'élément 11 du tableau, après que ces deux cartes soient échangées, l'élément 20 contiendra le 3 des Cœurs et l'élément 11 contiendra le 2 des Trèfles. Vous devez répéter ce processus de génération de deux nombres et d'échange des cartes dans les emplacements correspondants autant de fois que la constante de classe "SHUFFLE_SWAPS" l'indique. Si la graine aléatoire n'est pas -1, l'objet aléatoire que vous créez doit utiliser la graine aléatoire fournie. Cela permettra d'assurer que le pont sera battu de la même façon à chaque fois que vous exécutez le programme avec la même graine. Par exemple,

Random rand = new Random(seed); Si la graine aléatoire est -1, créez un objet aléatoire sans graine, ce qui créera un jeu différent à chaque fois que vous jouez. Par exemple,

Random rand = new Random(); Enfin, l'index utilisé pour sélectionner la prochaine carte à distribuer à partir du paquet doit être réinitialisé à 0.

public Card nextCard() - Cette méthode renvoie la carte suivante dans le paquet en fonction du champ d'instance qui connaît la position dans le tableau où se trouve la prochaine carte à distribuer. Avant de retourner la carte, assurez-vous de mettre à jour ce numéro afin que la prochaine fois que la méthode est appelée, la carte suivante dans le paquet soit retournée (augmentez-la de 1).

public String toString() - Cette méthode renvoie une représentation de chaîne du Deck qui sera utile pour les tests unitaires. ASTUCE: appelez la méthode toString () de la classe Card pour chaque carte du tableau d'objets Card.


Je pense que j'ai bien obtenu la méthode public Deck (int seed). Pouvez-vous prendre un coup d'oeil à qui? L'objet carte a le paramètre de (int value, char suit), donc pour le deck, je retourne ( int, char). Après cette méthode, je ne sais pas vraiment comment aller à partir de là. Quelqu'un peut-il me donner des indications à ce sujet?

Author: Shashi, 2012-04-27

1 answers

Vous devez utiliser un ArrayList pour le deck pour deux raisons. Tout d'abord, il sera plus facile d'ajouter/supprimer des cartes. Deuxièmement, il existe une méthode de lecture aléatoire dans java.utils.Collections. Ainsi, pour créer une liste de tableaux: ArrayList<Card> deck = new ArrayList<Card>(), ajouter une carte: deck.add(someCard | int_index), pour retirer une carte: deck.remove(someCard | int_index), shuffle: deck = Collections.shuffle(deck) (n'oubliez pas d'importer java.utils.Collections).

 2
Author: arshajii, 2012-04-27 01:25:43