AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Memory Spiel

Memory Spiel

Ein Thema von Luckie · begonnen am 10. Aug 2007 · letzter Beitrag vom 5. Sep 2007
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Luckie
Luckie
Registriert seit: 29. Mai 2002
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.
Angehängte Dateien
Dateityp: zip luckiememory_825.zip (195,3 KB, 208x aufgerufen)
Ein Teil meines Codes würde euch verunsichern.
 
1234588
 
#2
  Alt 10. Aug 2007, 15:25
mit zahlen ist das ja verdammt schwer :P
mir ist aufgefallen, das ein feld aufgedeckt bleibt, wenn man 3 anklickt
  Mit Zitat antworten Zitat
matashen

 
Delphi XE2 Enterprise
 
#3
  Alt 10. Aug 2007, 16:25
Spassig, das 2 und 6 gleich sind

mathematisch gesehen 2=6

also 3+3=2 oder 3-1=6

SIEHE BILD
Angehängte Grafiken
Dateityp: bmp memotest_600.bmp (386,2 KB, 113x aufgerufen)
Matthias
  Mit Zitat antworten Zitat
Benutzerbild von jmit
jmit

 
Turbo Delphi für Win32
 
#4
  Alt 10. Aug 2007, 16:59
Hallo,

ist ja so nicht schlecht, aber ich kenne Memory so, dass die Felder die beim Aufdecken nicht zusammenpassen, wieder verdeckt werden. Bei Deinem Programm bleiben immer wieder irgendwelche Felder aufgedeckt.

Gruß Jörg
Miniaturansicht angehängter Grafiken
memory_132.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#5
  Alt 10. Aug 2007, 17:15
Könnt ihr noch nicht male eine Sekunde warten, bis wieder Karten aufdeckt?

Gefixte Version im ersten Posting.
Michael
  Mit Zitat antworten Zitat
Benutzerbild von zecke
zecke

 
Turbo Delphi für Win32
 
#6
  Alt 10. Aug 2007, 17:19
Könntest auch noch abfangen, dass man nicht nichts eingeben kann bei New Game (edit: auch eine 0 brauch man nicht ^^ - edit2: eine 100 scheint etwas zu viel zu bewältigen zu sein ^^, aber ist gut, ich hör auf mit dem unsinn )

Ansonstn tuts bei mir einwandfrei (v1.0.0.1)
  Mit Zitat antworten Zitat
Benutzerbild von ArmyMan
ArmyMan
 
#7
  Alt 10. Aug 2007, 18:04
Hi Luckie

Cooles spiel, nur war bei mir der Spass schon in der ersten Runde durch eine Fehlermeldung verdorben worden
Nach dem Fehler konnte ich "New Game" anklicken so oft ich wollte aber das Spiel funktionierte nicht mehr.

Greetz
Miniaturansicht angehängter Grafiken
integer_berlauf_622.jpg  
ArmyMan
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#8
  Alt 10. Aug 2007, 19:46
Solange du mir nicht sagst, wie es zu dem Fehle rgekommen ist, kann ich nichts machen. Aber du kannst es auch schnell selber debuggen, die Sourcen liegen ja bei.
Michael
  Mit Zitat antworten Zitat
Laufi
 
#9
  Alt 10. Aug 2007, 20:25
Ich finde es schade dass das Spiel nicht richtig funktioniert
Wenn es geht kannst du es mir schicken oder neu hier posten?

liebe Grüsse
Laufi
  Mit Zitat antworten Zitat
Benutzerbild von ArmyMan
ArmyMan
 
#10
  Alt 10. Aug 2007, 21:41
@Luckie
Ich habe das Spiel normal gespielt... Beim 3en oder 4en Versuch kam dann der Fehler. Hab nichts aussergewöhnliches gemacht. Ich will doch nur spielen

Greetz
ArmyMan
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz