Einfaches Memory Spiel
Entstanden ist das
Memory Spiel aus diesem Thread heraus:
http://www.delphipraxis.net/internal...t.php?t=116000
Letzt endlich ist es nichts tolles, es soll eben nur vermitteln, demonstrieren, wie man so etwas
OOP konform lösen kann.

Zitat von
Luckie:
Es war schon richtig sich eine Klasse TCard zu erstellen und diese in einem Container TField zu verwalten. Eine Kart kennt ihren Zustand und ihren Wert, ob umgedreht oder nicht. TField kennt jede Position jeder Karte und deren Wert, den sie sich von dem Objekt TCard geben lässt. Ich drehe ein Karte um und TField fragt TCard: "Was hast du für einen Wert?" Dann wird die zweite Karte umgedreht und TField fragt auch diese Karte: "Was hast du für einen Wert?" TMemory fragt dann TField: "Sind die Karten gleich?" In Abhängigkeit der Antworte kann dann TMemory entscheiden was passieren muss. Entweder sagt es TField: "Dreh die Karten wieder um." (Sie waren nicht gleich.) Und TField sagt den Karten, dass sie wieder ihren Zuständ ändern sollen und zwar in den umgedrehten. Oder TMemory sagt TField: "Nimm die Karten vom Spielfeld. (Sie waren gleich und TField löscht die betreffenden Karten-Objekte aus der Liste und stellt deren Plätze entsprechend dar.)
Manchmal fällt es leichter, wenn man sich so einen Ablauf mit handelnden Peronen vorstellt. Hier haben wir einen Spielleiter, TMemory, der die Regeln kennt und entscheidet, was passieren muss. Dann haben wir einen Spielfeldverwalter, TField, der die Anweisungen an die Akteure, TCard, weitergibt. Man überlegt, welche Personen brauche ich und wie arbeiten diese Personen zusammen, welche Informationen benötigen sie (das sind dann die Attribute der Klasse) und welche Informationen übermitteln sie (das sind dann die Methoden). Hinzu kommen Ereignisse, die entsprechende Reaktionen bei den handelnden Personen auslösen.
Beispiel:
Wird eine Karte umgedreht, wird das Ereignis OnFlip ausgelöst und TField zählt mit. So bald TField festgestellt hat, dass zwei mal dieses Ereignis eingetreten ist, fragt es die Karten, welche Werte sie haben und löst dann das Ereignis OnEndTurn aus. Im Ereignis OnEndTurn teilt es dem Spielleiter TMemory mit, ob die Karten gleich sind oder nicht. TMemory weist dann TField an, was mit den Karten passieren soll.
Der Code der Memory-Klassen hat sich zu der Version aus dem Thread noch etwas geändert, so dass der Spielfeldverwalter jetzt wirklich nur für das Spielfeld verantwortlich ist und der Spielleiter (hier die Form) nur das Spiel leitet.
Ein Teil meines Codes würde euch verunsichern.