Einzelnen Beitrag anzeigen

Qnkel

Registriert seit: 14. Mär 2004
114 Beiträge
 
FreePascal / Lazarus
 
#1

Kartenspiel: Wie Karten "kodieren" (Wert, Farbe)?

  Alt 21. Mär 2010, 14:38
Moin.

Ich möchte ein Kartenspiel programmieren (Schwimmen) mit bis zu 8 Spielern. Es soll eine KI geben, gegen die man spielen kann. Diese will ich in einer DLL auslagern, damit jeder ne eigene KI schreiben kann.

Dazu hab ich hier schon einen guten Tipp gelesen einfach ne Funktion zu machn, der man ne Klasse "TSituation" übergibt und die "TMove" zurück gibt.

Jetzt muss ich ja im Programm verwalten, welche Karte grade wo ist und das entsprechend auch in TSituation schreiben für die KI.

Wie kann man das am schlauesten kodieren, um Sachen wie case..of zu nutzen.

Dachte an ne einfache Integerzahl "00".
Die erste Zahl ist der Kartenwert: 7-9 für 7-9, 1 = 10, 2=Bube, 3=Dame, 4=König, 5=Ass.
Die zweite Zahl ist die Farbe: 1=Herz, 2=Karo, 3=Pik, 4=Kreuz

Oder als String halt mit 7-9, Z=Zehn, B,D,K,A etc. und Farben genauso, nur dann müsste ich mir für case..of wieder ne kleine Funktion basteln.

Noch dazu gibt es 8 Mitspieler und die Karten in der Mitte, jeweils 3 = 27 Karten, die maximal unterwegs sind.

Oder mach ich eine Klasse TSituation innerhalb des Programmes mit lauter Unterkategorien, die ich entsprechend benenne?

Situation.Spieler1.Karte1.Farbe
Situation.Spieler1.Karte1.Wert

etc.?

Hab da noch nicht viel Erfahrung im Management solcher Daten. Wie würdet ihr es am einfachsten machen? Was würdet ihr, wenn ihr eine KI schreibt, übermittelt bekommen?

Also die KI kriegt jeden "Zug" übermittelt, mehr nicht. Die KI muss dann entsprechend programmiert werden, ob sie sich "merkt" wer welche Karte genommen hat und so weiter. Das wird nicht durch das Programm vorgegeben.

Vielen Dank schonmal für eure Hilfe.
Lazarus v0.9.29 (2010-10-31 SVN 28000)
  Mit Zitat antworten Zitat