Vielen Dank für die vielen Antworten, hat mir sehr geholfen
Ich hab nun ein bisschen weiter programmiert und stehe vor einem ähnlichen Problem. Ich möchte eine KI programmieren, d.h. ich möchte im Endeffekt gegen den Computer spielen können.
Jetzt gibt es im Poker ja verschiedene Spielrunden (vor den Flop, nach dem Flop, am Flop, am Turn, am River). Die Spieler müssen in jeder Spielrunde anders reagieren.
Ich habe derzeit eine Klasse Player.
In jeder Spielrunde müssen die Spieler anders reagieren, sie müssen z.B. erkennen, welches Blatt sie vor dem Flop bzw. nach dem Flop halten => Methoden der Klasse Spieler. Jetzt wären das aber eine ganze Menge Methoden und ich suche nach einer Möglichkeit, diese zu Gruppieren.
Ich habe schon einige Möglichkeiten durchgedacht, bin mir aber nicht sicher, welche objektorientiert gedacht, am sinnvollsten ist.
a)
class Player mit nur wenigen Methoden (setzten, passen, schieben)
class Gamplay
class Preflopplay extends Gameplay
class Postflopplay extends Gameplay
class Flopplay extends Postflopplay
Hier wären die Aktionen, welche ja eigentlich der Spieler macht (Hand analysieren - also die Strategie) in einem eigenen "Gamplay-Baum". Die "Denkarbeit" ist praktisch in einer anderen Klasse als die echten Aktionen, wie setzen.
Das wäre denk ich sehr übersichtlich. Die Frage ist aber, ob das nichtder Objektorientierung widerspricht, da "Flopplay" ja eigentlich kein Objekt ist, sondern nur Methoden beinhaltet, die mit dem Spieler in Zusammenhang stehen. Vll. wäre es angebracht, die Gameplay-Klassen als abstrakte Klassen zu schreiben.
b)
class Player mit allen Methoden
Egal ob setzten, passen oder denken. Strategie und konkrete Aktionen wären hier in der gleichen Klasse. Logisch finde ich das schon, da der Spieler ja setzt, passt und denkt. Allerdings fände ich es unübersichtlich, wenn praktisch das gesamte Gameplay in einer Klasse wäre.
c)
class Player mit nur wenigen Methoden (setzten, passen, schieben)
class Gamplay extends Player
class Preflopplay extends Gameplay
class Postflopplay extends Gameplay
class Flopplay extends Postflopplay
Ähnlich wie bei a), nur dass diesmal Gameplay von Spieler erbt. Kommt mir aber unlogisch vor, da Preflopplay sicher kein Player ist - daher scheidet diese Möglichkeit für mich aus.
Wäre für jede Hilfe dankbar, werde mir auch den verlinkten Text durchlesen. Leider fange ich erst in einem Jahr mit dem Studium an. Viel kann man eh durch openbooks ect. lernen, aber bei solchen Fragen muss ich erst ein Gefühl entwickeln, in welche Richtung gedacht werden muss. T
Thx im voraus