[JAVA] [DEVOIRS] Pickomino Jeu


Salut les gars et les filles. C'est mon premier post ici alors soyez doux si vous le pouvez.

Je dois créer une version Java d'un jeu de société appelé Pickomino. Dans ce jeu, vous êtes un poulet, vous lancez des dés et vous collectez des vers de la table. Il y a 16 cartes sur la table. Si un joueur choisit une carte, il la met dans sa "pile" et elle est retirée de la table.

Dans ma "méthode principale", j'ai ce code pour obtenir des points de la table mais comme vous le verrez, ce n'est pas 100% droit, donc j'aimerais entendre votre opinion, peut-être avec une meilleure solution.

if (player1.canIPick(pickedDice)){
        switch (sumOfDice) {
            case 21:
            case 22:
            case 23:
            case 24:
                player1.setPoints(1);
                break;
            case 25:
            case 26:
            case 27:
            case 28:
                player1.setPoints(2);
                break;
            case 29:
            case 30:
            case 31:
            case 32:
                player1.setPoints(3);
                break;
            case 33:
            case 34:
            case 35:
            case 36:
                player1.setPoints(4);
                break;
        }
    }

Il y a 2 choses que je n'aime pas dans ce code, d'abord, c'est faux parce que si quelqu'un choisit une carte de la table et obtient les points, un autre joueur peut choisir la même carte. Aussi comme je l'ai dit, cela fait partie de ma méthode principale et je n'aime pas ça, alors j'ai pensé créer un Array dans une autre classe et avoir accès à partir de là dans les cartes mais j'ai un peu de mal avec ça. Est-il autre suggestion que vous pouvez me donner pour m'aider? Est-ce que Array va fonctionner ou est-ce une mauvaise façon aussi?

Merci pour votre temps.

Author: Akumu, 2014-01-15

1 answers

Je ne sais pas exactement comment ce jeu est joué. Mais je suggère de créer un tableau de cartes qui se trouvent sur la table, ( comme vous l'avez dit). Et réinitialisez les valeurs au début d'une nouvelle partie.

ArrayList<Integer> cardsOnTable = new ArrayList<Integer>();

for(int i = minPoint; i<=maxPoint;i++) {
   cardsOnTable.add(i);
}

Et lorsque vous retirez une carte, vous pouvez vérifier si cette carte est toujours sur la table (dans la liste).

if (player1.canIPick(pickedDice)){
    if(cardsOnTable.contains(sumOfDice)) {
       /* check for points here*/
       cardsOnTable.remove(sumOfDice));
    }
}

Ou vous pouvez essayer d'utiliser un HashMap avec un entier et un booléen et faire représenter le booléen si la carte est prise.

 1
Author: VbN, 2014-01-15 15:07:10