Memoryspiel mit Buttons?
-
Hi,
ich versuche gerade ein Memoryspiel mit 12 Karten mittels MFC zu erstellen.
Der Spielalgorithmus ist auch kein Problem.
Hab ein Array cardID [12] wo 2 mal die Zahlen von 1 bis 6 vorhanden sind.
Das Problem: In meinem Dialog sind 12 Bitmapbuttons. Wie kann ich jetzt den Buttons mittels der
cardID die Bilder (befinden sich in den Ressourcen) zuordnen?
Und wie kann ich Buttons tranparent darstellen? Geht das überhaupt?
Ist es überhaupt sinnvoll, dass ganze mittels Buttons zu machen oder gibt es eine bessere Möglichkeit?Gruß
-
Ich hätte es jetzt nur mit Bitmaps gemacht, aber mit Buttons dürfte es auch gehen.
Für Transparenz kannst du dir vielleicht mal TransparentBlt() anschauen.
Habe damit aber selbst keine Erfahrungen. Wozu soll es denn transparent sein?Zuordnen kannst du die bei Buttons normalerweise mit CButton::LoadBitmap() oder CButton::SetBitmap (?!?). Habe gerade nicht viel Zeit, musst du wohl eben selber nachschauen oder ein anderer meldet sich hier.
Viele Grüße.
-
Thx erstmal.
Wie man die Bilder setzt ist mir schon klar. Ich muss die aber aufgrund der cardID dynamisch zuweisen. Das ist das Problem.
Transparent müssen sie werden, wenn 2 gleiche Bilder gefunden wurden. (Beim normalen Memory werden diese Karten ja dann weggenommen).
Wie meinst du das nur mit Bildern? Wie kann ich denn da ermitteln ob das angeklickt wurde? Da hab ich dann aber auch das Problem, die dynamisch zuzuordnen (bzw anzeigen zu lassen).
(Die Bilder werden ja nach bei jedem neuen Spiel gemischt und müssen dann an die entsprechende Position in meinem Dialog bzw. in meinem Fall dem entsprechenden Button zugeordnet werden.)
-
Wie wärs wenn du die bilder einfach so reinmachst und dann auf das onClick (zumindest bei borland) ereignis abfragst? müsste eigentlich die einfachere lösung sein. und die bilder kannste dann auch unsichtbar machen...
-
Slash schrieb:
Wie meinst du das nur mit Bildern? Wie kann ich denn da ermitteln ob das angeklickt wurde?
Du nimmst einfach CBitmap-Objekte und lädtst dort deine Bilder rein.
Und lässt diese in der OnPaint()/OnDraw() - Funktion anzeigen/zeichnen.
Du kannst dann anhand der Position und Größe Regionen erstellen und mit HitTest (oder so ähnlich) prüfen, ob du dich in diesem Bereich befindest. Oder du fragst in der WM_MOUSEMOVE-Behandlungsroutine, ob der Mauszeiger sich innerhalb der Koordinaten befindet.Slash schrieb:
Transparent müssen sie werden, wenn 2 gleiche Bilder gefunden wurden. (Beim normalen Memory werden diese Karten ja dann weggenommen).
Wenn du zwei gleiche gefunden hast, dann willst du, dass diese verschwinden ->
dann lasse sie einfach nicht mehr zeichnen. Setze ein Flag (Bool-Variable), dass die Bilder x und y nicht mehr gezeichnet werden sollen: -> m_bDrawX = FALSE;
Und in der OnPaint()/OnDraw() in deiner Zeichenroutine fragst du das dann einfach ab:if (m_bDrawX) // zeichne Bild x
Slash schrieb:
Da hab ich dann aber auch das Problem, die dynamisch zuzuordnen (bzw anzeigen zu lassen).
(Die Bilder werden ja nach bei jedem neuen Spiel gemischt und müssen dann an die entsprechende Position in meinem Dialog bzw. in meinem Fall dem entsprechenden Button zugeordnet werden.)Du kannst doch beim Spielstart doch einfach deine Bilder neu zuordnen lassen?! Oder was meinst du?
MfG.