Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

AW: Karten-Verteil-Algorithmus

  Alt 29. Mai 2012, 16:35
Für die Datenhaltung der Karten gibt es ja zwei Ansätze
* Arrays
* Listen
Listen sind dabei der abstraktere und bessere Ansatz, denn man braucht nicht darum kümmern, dass beim Löschen einer Karte ein Loch entsteht oder dass beim Einfügen evtl. neuer Platz geschaffen werden müsste.

Ein Kartenspiel mit 32 Karten aus dem dann Karten an die Spielerhände verteilt werden lässt sich viel leichter mit Listen als mit Arrays implementieren.
Der kleine Overhead, den Listen gegenüber Arrays haben liegt deutlich unter einer Millisekunde - der Spieler bemerkt davon überhaupt nichts.

Man benötigt folgende Listen:
* Kartengeber (zu Beginn gefüllt mit 32 Karten)
* Spieler 1 ... Spieler N
* Tisch = Karten die auf dem Tisch liegen

Je nach Kartenspiel braucht jeder Spieler noch eine weitere Liste in der er seine gewonnenen Stiche ablegt.
Es kann für den Tisch auch zwei Listen geben (verdeckte Karten / offene Karten).

Auf jeden Fall sind Listen die Vorraussetzung dafür, dass der Code gut les- und verstehbar wird.
Wenn z.B. ein Spieler gewonnen hat und die Karten einsacken will, dann sieht das so aus:
TischList.MoveTo(Sieger.WinList); // alle Karten auf dem Tisch in die "Gewinnliste" verschieben
Da ja ständig Karten zwischen den Listen verschoben werden, sollte die Klasse für die Listen dies speziell berücksichtigen, damit man später mit einem Methodenaufruf auskommt:
AktiverSpieler.HandList.MoveCard(IndexDerKarte, TischList); // gewählte Karte auf den Tisch legen
Andreas

Geändert von shmia (29. Mai 2012 um 16:45 Uhr)
  Mit Zitat antworten Zitat