Ich kann mir keine gute Architektur für mein Kartenspiel einfallen lassen. Ich brauche Hilfe, um zu verstehen, wie Spiele normalerweise gestaltet sind.
Zuerst werde ich die Spielregeln beschreiben.
Spielregeln
Konfiguration- Es gibt vier Spieler, von denen jeder zwei ein Team bildet.
- Jeder Spieler erhält 12 gemischte Karten
- Es gibt 4 geblendete Karten auf dem Tisch (Fluss)
- Die Reihenfolge der Spieler ist so

- Jeder Spieler kann eine Zahl zwischen 100 und 160 passen oder auswählen, die größer als der aktuelle Einsatz ist
- Das Wetten beginnt beim ersten Spieler und kreist bis zum Pass eines Teams
- Sobald ein Spieler passt, kann er nicht mehr wetten
- Das Team, das die Wettrunde gewinnt, sollte mindestens Punkte sammeln, die seiner Wette entsprechen, um das Spiel zu gewinnen
Die Mannschaft, die die Wettrunde verloren hat, sollte nicht zulassen, dass ihre Mannschaft ihr Ziel erreicht
Wenn das Team, das die Wettrunde gewonnen hat, alle Punkte erhält, erhält das andere Team negative Punkte in Höhe seiner Wette
- Wenn das Team, das die Wettrunde verloren hat, alle Punkte sammelt, erhält das andere Team doppelt negative Punkte
Spielfluss und Sammeln von Punkten
- Der Spieler, der die Wettrunde gewonnen hat ( der König ), erhält vier verbleibende Karten auf dem Tisch.
- Dann kann sie / er einen Satz von vier Karten in ihrer Teamkartenbank speichern, ohne sie zu spielen.
- Der König wird einen Anzug als Herrscheranzug auswählen und andere darüber informieren
- King beginnt das Spiel, indem er eine Karte aus seiner Hand auf den Tisch legt. Jeder andere Spieler sollte in dieser Reihenfolge spielen
- Wenn sie dieselbe Farbe dieser Karte auf der Hand haben, müssen sie eine dieser Karten spielen
- Wenn sie es nicht haben, können sie jeden anderen Anzug spielen
- Nachdem alle anderen Spieler ihre Hände gespielt haben, ist der Gewinner der Runde:
- Derjenige, der die höchste Karte hat, wenn alle Karten gleich sind
- Derjenige, der die höchste "Lineal" -Karte hat, falls es eine gibt
- Der Gewinner der Runde sammelt Karten und legt sie auf seine Bank
- Spieler, die die vorherige Runde gewonnen haben, beginnen die nächste Runde
- Dies wird so lange fortgesetzt, bis alle Hände leer sind
Punkte zählen
- Jede Runde zu gewinnen hat 5 Punkte. Dies bedeutet, dass jede 4 Karten mindestens 5 Punkte hat.
- Wenn Sie ein Ass, 10 oder 5 in der Bank haben, werden jeweils 5 Punkte hinzugefügt
Mein Design
Klassen
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(){}
}
Mein Problem
Nachdem ich alle diese Klassen definiert habe, weiß ich nicht, wie ich diese Definitionen an eine Datenbank (wie Mongo) binden und den Spielfluss steuern soll.
- Wohin soll all diese Logik gehen?
- Wie soll ich den Status in einem Server / Client-Szenario beibehalten?
Hinweis:
Ich benutze Dart, um dies zu programmieren, aber ich möchte nicht, dass Antworten in Dart geschrieben werden.