Database
 sql >> Datenbank >  >> RDS >> Database

Die Geheimnisse von Dominos oder ein Domino-Spieldatenmodell

Brettspiele wie Domino sind nach wie vor sehr beliebt. Werfen wir einen Blick auf Dominosteine ​​aus Sicht der Datenmodellierung.

Das Dominospiel gibt es schon seit Hunderten von Jahren und es wird auf der ganzen Welt gespielt. Wie zu erwarten, bedeutet dies viele Variationen im Spiel! In diesem Artikel werden wir ein Datenmodell untersuchen, das die gängigsten Varianten – Draw und Block – unterstützen könnte. Die Grundlagen dieser beiden Varianten sind fast gleich; Es gibt nur geringfügige Unterschiede in den Regeln. Dominosteine ​​können von zwei oder mehr Spielern gespielt werden, daher unterstützt unser Datenmodell mehrere Spieler.

Beginnen wir mit einigen Grundlagen des Dominospiels und fahren dann mit dem Datenmodell fort.

Was müssen wir über Dominosteine ​​wissen?

  • Ein Domino-Set enthält 28 Spielsteine, die „Knochen“ oder „Kacheln“ genannt werden. Sie sind rechteckig, mit einer Linie in der Mitte, die jede Kachel in zwei quadratische Enden (oder Flächen) teilt.
  • Jedes Ende hat eine Anzahl von Punkten, die von 0 bis 6 reichen. Diese Punkte werden „Pips“ genannt.
  • Kacheln mit denselben Werten an beiden Enden werden als „Doubles“ bezeichnet, z. eine Doppel-Sechs hat sechs Pips an jedem Ende.
  • Die Ansammlung von Dominosteinen auf der Spielfläche wird als Spiellinie bezeichnet. Die Enden der Spiellinie werden Abzweigecken genannt. Ecken verzweigen Hier können Spieler neue Kacheln spielen.

Ein Spiel starten

  • Alle Plättchen werden verdeckt auf einen Tisch gelegt.
  • Bei 2-3 Spielern zieht jeder Spieler 7 Plättchen. Bei 4-5 Spielern zieht jeder Spieler 5 Plättchen. Die restlichen Plättchen bleiben auf einem Haufen, der „Boneyard“ genannt wird.
  • Der Spieler mit dem höchsten Pasch hat den ersten Zug. Das Spiel bewegt sich normalerweise im Uhrzeigersinn.
  • Um einen Domino zu spielen, legt ein Spieler ein Plättchen neben ein bereits auf den Tisch gelegtes Plättchen. Die Enden der Kacheln müssen übereinstimmen, d.h. ein Zwei-Pip-Ende kann nur neben einem anderen Zwei-Pip-Ende platziert werden. (Hinweis:Einige Spielvarianten haben unterschiedliche Regeln bezüglich der Zuordnung.)

Spielregeln

  • Der erste Spieler legt das höchste Doppel offen auf den Tisch.
  • Der nächste Spieler muss einen Domino spielen, der dem zuvor gelegten Domino entspricht.
  • Ein Spieler, der kein Ende der Formation erreichen kann, muss „anklopfen“ oder „passen“. In einem Blockspiel bedeutet dies einfach, dass das Spiel zum nächsten Spieler übergeht. In einem Draw-Spiel müssen die Spieler Kacheln aus dem Boneyard ziehen, bis sie eine spielbare Kachel finden. Wenn der Boneyard leer ist, geht das Spiel einfach an die nächste Person über. Einige Varianten des Ziehspiels begrenzen die Anzahl der Plättchen, die ein Spieler ziehen muss, d. h. bis zu 3 Plättchen. Wenn der Spieler die festgelegte Anzahl an Kacheln zieht und keine Übereinstimmung findet, geht das Spiel zur nächsten Person über.
  • Die Spiellinie hat jederzeit zwei oder mehr Abzweigungen (spielbare Enden). Spieler können auf jedem Zweig spielen, der die gleiche Anzahl von Pips hat wie einer ihrer Plättchen. Doubles werden im rechten Winkel zu allen anderen Plättchen platziert. (Hinweis:Einige Varianten haben unterschiedliche Regeln bezüglich der Spiellinie.)

Ein Dominospiel gewinnen

  • In einem Unentschieden-Spiel gewinnt der erste Spieler, der alle seine Plättchen gespielt hat. Das Spiel kann (oder auch nicht) fortgesetzt werden, bis beide Enden der Spiellinie blockiert sind und keine Dominosteine ​​mehr im Boneyard liegen.
  • In einem Blockspiel gewinnt der Spieler mit den wenigsten Kacheln, wenn die Enden blockiert sind und niemand mehr spielbare Kacheln hat.

Wertung

Bei einem Unentschieden-Spiel ist die Summe der Punkte auf den verbleibenden Dominosteinen der Verlierer die Punktzahl des Gewinners. Bei einem Blockspiel gewinnt die Person mit der niedrigsten Summe an übrig gebliebenen Pips; dieser Spieler subtrahiert seine Summe von der Summe seines Gegners; die Differenz ist die Punktzahl des Siegers. Hinweis:Bei einigen Spielen müssen die Spieler eine Mindestpunktzahl erreichen, um zu gewinnen.

Das Dominoes-Datenmodell

Das Domino-Datenmodell besteht aus zwei Themenbereichen:

  • “Entities: players, dominoes and games” und
  • “Game progress and tracking”

Wir besprechen jeden Themenbereich in der Reihenfolge, in der er aufgeführt ist.




Themenbereich 1:Spieler, Dominosteine ​​und Spiele

Dieser Themenbereich enthält das, was wir die Haupteinheiten eines Dominospiels nennen können:die Spieler, die Dominosteine ​​und das Spiel.

Die „Spieler“-Tabelle enthält Profildetails für alle einzelnen Spieler. Die Spalten in dieser Tabelle sind:

  • id –Eine eindeutige ID für jeden Spieler.
  • player_name – Vor- und Nachname des Spielers.

Die folgenden Spalten in dieser Tabelle speichern die Spielstatistiken jedes Spielers:

  • num_block_game_played – Die Anzahl der Blockspiele, die der Spieler gespielt hat.
  • num_draw_game_played – Die Anzahl der Ziehungsspiele, die der Spieler gespielt hat.
  • num_block_game_win – Die Anzahl der vom Spieler gewonnenen Blockspiele.
  • num_draw_game_win – Die Anzahl der vom Spieler gewonnenen Ziehungsspiele.
  • highest_block_score – Die höchste Punktzahl des Spielers aller Zeiten in einem Blockspiel.
  • highest_draw_score – Die bisher höchste Punktzahl des Spielers in einem Unentschieden-Spiel.

Der „bone ”-Tabelle enthält Informationen über die Dominosteine ​​selbst. Die Spalten in dieser Tabelle sind:

  • id – Ein eindeutiger Schlüssel für jede Kachel. Dieser Schlüssel wird von anderen Tabellen referenziert.
  • first_face_value – Die Anzahl der Punkte auf der ersten Seite (Ende).
  • second_face_value – Die Anzahl der Punkte auf der zweiten Seite (Ende).

Das „game ” Tabelle speichert Informationen über Spiele. Die Spalten in dieser Tabelle sind:

  • id – Der Primärschlüssel dieser Tabelle; es identifiziert jedes Spiel eindeutig.
  • game_variant – Die gespielte Variante, also „Block“ oder „Unentschieden“.
  • score_to_win – Die Mindestpunktzahl, die benötigt wird, um ein Spiel zu gewinnen.
  • num_round_complete – Die Anzahl der in diesem Spiel gespielten Runden. Jedes Spiel umfasst normalerweise mehrere Runden und dauert so lange, bis jemand die Gewinnpunktzahl erreicht.

Die Datei „player_in_game ” Tabelle sagt uns, welche Spieler an einem Spiel teilnehmen. Neben der player_id , enthält diese Tabelle ihre aktuellen Punktzahlen im player_curr_score Säule. Wenn ein Spieler gewinnt, wird ein „Y“ in is_winner eingefügt Säule. Da mehr als ein Spieler ein Spiel gewinnen kann, werden wir dieses Detail hier statt im „game " Tisch.

Themenbereich 2:Spielfortschritt und Tracking

Wie jeder Dominospieler weiß, besteht die eigentliche Aktion des Spiels aus seinen Händen, Runden und Zügen – den winzigen Details, die ein Spiel machen oder brechen. Dieser Themenbereich behandelt diese Details.

Ein Spiel erfordert normalerweise mehrere Runden. Für jede Runde wird eine bestimmte Anzahl von Plättchen an jeden Spieler verteilt. Nennen wir diese Verteilung von Kacheln eine „Hand“. Jedes Mal, wenn eine Runde beginnt, hat jeder Spieler eine Hand mit Steinen, die er spielen kann. (Hinweis:Bei manchen Draw-Spielen kann die Anzahl der Spielsteine ​​in jeder Hand sieben überschreiten.)

Die „round ”-Tabelle speichert Details jeder Runde. Dazu gehört eine Momentaufnahme des aktuellen Stands, z. aktuelle Kachelwerte in den Astecken. Die Spalten in dieser Tabelle sind:

  • id – Eine eindeutige Nummer, die jeder Runde zugewiesen wird.
  • game_id – Verweist auf das „game ” Tabelle und zeigt das Spiel an, zu dem diese Runde gehört.
  • left_branch_value – Hält den Wert von links Zweig Ecke. Jedes Plättchen mit einem passenden Wert (Anzahl Pips) kann im nächsten Zug gespielt werden.
  • right_branch_value – Hält den Wert des Rechts Zweig Ecke. Jedes Plättchen mit einem passenden Wert (Anzahl Pips) kann im nächsten Zug gespielt werden.
  • curr_num_tiles_boneyard – Die Anzahl der Kacheln im Boneyard zu einem bestimmten Zeitpunkt. Dieser Spaltenwert wird jedes Mal um eins reduziert, wenn ein Spieler ein Plättchen zieht. Diese Spalte ist bei Draw-Spielen nützlich.

Die „hand ”-Tabelle zeichnet alle Kacheln in den Händen der Spieler während einer Runde auf. Die Spalten in dieser Tabelle sind:

  • id – Der Primärschlüssel dieser Tabelle.
  • round_id – Verweist auf die „round ” Tabelle und zeigt die jeweilige Runde an.
  • player_id – Verweist auf den „player ” Tabelle und zeigt den jeweiligen Spieler an.
  • bone_id – Verweist auf den „bone ”-Tabelle und zeigt an, welche Plättchen der Spieler auf der Hand hat/hatte.
  • is_played – Ob ein Plättchen gespielt wurde. Anfänglich ist diese Spalte null. Es wird nur dann mit „Y“ gefüllt, wenn eine Kachel gespielt wird. Dasselbe Plättchen kann nicht zweimal in einer Runde gespielt werden.
  • is_fetched – Ein „Y“ in dieser Spalte bedeutet, dass Spielsteine ​​in einem Zug gezogen wurden. Nützlich für Draw-Spiele.

Die „move ”-Tabelle zeichnet die Zugfolge für jedes in einer Runde gespielte Plättchen auf. Die Spalten in dieser Tabelle sind:

  • id – Identifiziert jeden Zug in einer Runde eindeutig.
  • round_id – Verweist auf die „round ” Tabelle und zeigt die jeweilige Runde an.
  • move_type – Die Art der Bewegung, d. h. Pass (P), Remis (D) oder Lege (L).
  • hand_id – Verweist auf die „hand ”-Tabelle und zeigt an, welcher Spieler am Zug ist.
  • branch_played_at – Gibt den Zweig (links oder rechts) an, an dem die Bewegung ausgeführt wird. Diese Spalte wird nur im Falle einer „Lay-down“-Bewegung ausgefüllt.
  • move_sequence – Diese Zahlenspalte beginnt mit 1 und wird nach jedem Zug um eins erhöht.

Der „player_round_score ”-Tabelle speichert die Punktzahlen für einzelne Spieler für jede Runde. Diese Tabelle hat einen zusammengesetzten Primärschlüssel, der aus game_id besteht , player_id und round_id Säulen. Die game_id und player_id Spalten werden von der Datei „player_in_game " Tisch.

Was würden Sie dem Domino-Datenmodell hinzufügen?

Basic Train, Mexican Train, Chicken Foot, Bendomino, Cyprus, Maltese Cross, Matador, Spinner – das sind nur einige der vielen Varianten von Dominos! Was wäre Ihrer Meinung nach erforderlich, um dieses Modell zu erweitern, um diese Spiele aufzunehmen? Was würden Sie am Basismodell ändern oder ergänzen? Sagen Sie es uns im Kommentarbereich unten!