Je ne peux pas proposer une bonne architecture pour mon jeu de cartes. J'ai besoin d'aide pour comprendre comment les jeux sont généralement conçus.
Tout d'abord, je décrirai les règles du jeu.
Regles du jeu
Installer- Il y a quatre joueurs, chacun deux joueurs forment une équipe.
- Chaque joueur reçoit 12 cartes mélangées
- Il y a 4 cartes aveugles sur la table (rivière)
- L'ordre des joueurs est comme ça
- Chaque joueur peut passer ou sélectionner un nombre supérieur au pari actuel entre 100 et 160
- Les paris commencent à partir du premier joueur et tournent jusqu'à ce qu'une équipe passe
- Une fois qu'un joueur passe, il ne peut plus parier
- L'équipe qui remporte le tour d'enchères doit au moins collecter des points égaux à son pari afin de gagner la partie
L'équipe qui a perdu le tour d'enchères ne doit pas permettre à son équipe d'atteindre son objectif
Si l'équipe qui a gagné le tour d'enchères obtient tous les points, l'autre équipe recevra des points négatifs égaux à sa mise
- si l'équipe qui a perdu le tour d'enchères collecte tous les points, l'autre équipe obtiendra le double de points négatifs
Flux de jeu et points de collecte
- Le joueur qui a gagné le tour d'enchères ( le roi ) reçoit quatre cartes restantes sur la table.
- Ensuite, il / elle peut enregistrer un jeu de quatre cartes dans leur banque de cartes d'équipe sans même les jouer.
- Le roi choisira un costume comme costume de règle et fera savoir aux autres que
- King commence la partie en mettant une carte de sa main sur la table. Chaque autre joueur doit jouer dans cet ordre
- s'ils ont la même couleur de cette carte en main, ils doivent jouer une de ces cartes
- s'ils ne l'ont pas, ils peuvent jouer n'importe quel autre costume
- Après que tous les autres joueurs auront joué leurs mains, le vainqueur du tour sera:
- Celui qui a la carte la plus élevée si toutes les cartes sont identiques
- Celui qui a la plus haute carte "souverain" s'il y en a
- Le gagnant du tour récupérera les cartes et les déposera dans sa banque
- Le joueur qui a gagné le tour précédent commencera le tour suivant
- Cela continuera jusqu'à ce que la main de tout le monde soit vide
Points de comptage
- Gagner chaque tour a 5 points. Cela signifie que toutes les 4 cartes ont au moins 5 points.
- Avoir Ace, 10 ou 5 en banque ajoute 5 points
Ma conception
Des classes
class Card {
string suit;
string rank
}
class Deck {
List cards = [];
List suits = ['S', 'H', 'D', 'C'];
List ranks = ['1', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A'];
private void init(){..}
void shuffle(){...}
}
class Game{
Deck deck = new Deck();
Player player1;
Player player2;
Player player3;
Player player4;
int _isOn = 0;
Game(this.player1, this.player2, this.player3, this.player4){
deck.makeCards();
deck.shuffle();
start();
}
void start(){
player1.cards.addAll( deck.cards.getRange(0, 12) );
player2.cards.addAll( deck.cards.getRange(12, 24) );
player3.cards.addAll( deck.cards.getRange(24, 36) );
player4.cards.addAll( deck.cards.getRange(36, 48) );
deck.cards.removeRange(0, 48);
}
String toJson(){
}
String toString(){
}
}
class Player{
String name;
int points;
List cards = [];
Player(this.name, {this.points});
String toJson(){}
String toString(){}
}
Mon problème
Maintenant que j'ai défini toutes ces classes, je ne sais pas comment lier ces définitions à une base de données (comme Mongo) et contrôler le déroulement du jeu.
- Où devrait aller toute cette logique?
- Comment dois-je conserver l'état dans un scénario serveur / client?
Remarque:
J'utilise Dart pour programmer cela, mais je ne veux pas nécessairement que les réponses soient écrites en Dart.