Minesweeper mit VB

Seit wann haben labels kein click ereignis :confused:

Das ist mir jetzt aber neu^^ Natürlich haben die ein click ereignis und ja labels gehen wunderbar...

Und bevor ich diesen mögl. Schrott poste, guck ich jetzt nach und:


Code:
Automatisch generierter code:

Private Sub Label1_Click()

End Sub

Von wegen...
 
Hey,

ich habe jetzt folgendes bewerktstelligt:

Einfach ne Reihe von 8*8 Viechern, ähm, Buttons.
die nennen sich cmdField(Index).
(Überragend, ich weiß)

So, jetzt ist mein Problem. Wenn man bei Minesweeper nun auf ein Feld klickt, kommt ja nicht nur eine Zahl, sondern manchmal auch eine Ganze Batterie von neuen Feldern. Wie geht das?
 
Wenn man auf ein leeres Feld klickt, öffnen sich alle anschliessenden leeren Felder + das erste mit einer Zahl belegten Feld.
Klickt man auf eine Zahl, öffnet sich nur dieses eine Feld.
Klickt man auf eine Bombe....na Du weisst schon^^

Du nimmst also das Click-Ereignis und prüfst in einer Schleife ob angrenzende Felder leer sind. Um das möglichst optimal zu gestalten solltest Du Dir die Verteilung der Indexe genauer ansehen. Eventuell die Indexe optisch so anordnen, dass Du damit arbeiten kannst.
 
Ah, ich glaub ich verstehs. Oder auch nicht :rolleyes:

Also ich teste grad mal an einer gedownloadeten Version.

Ich mache also ein neues Spiel. Alle Felder unaufgedeckt.
Ich klicke nun auf ein Feld. (links oben) und es erscheint eine... momentchen ... ein leeres Feld.

jetzt hat sich folgendes Muster ergeben:
- leer - leer - leer - leer - leer - 1
- 1 - 1 - 2 - 1 - 1 - 2
Ich versteh das nicht :mad:
 
Hm, also wenn ich das richtig verstehe kommst Du mit dem Ablauf nicht zurecht. So würde ich die Sache angehen...

Wenn ich auf ein Feld klicke, muss meine Funktion/Prozedur folgende Aufgaben erledigen:
- feststellen ob der Klick auf ein leeres oder besetztes Feld erfolgt ist
-- wenn Bombe: Game Over!
-- wenn belegt: Feld aufdecken, nächster Zug.
-- wenn leer:
- feststellen in welcher Reihe und welcher Spalte der Klick gemacht wurde
- feststellen welchen Index die umliegenden Felder haben (ringförmig)
- feststellen ob die ermittelten Felder leer sind oder belegt
- feststellen ob die angrenzenden Felder, der aufgedeckten Felder, leer sind
...und das solange bis keine leeren Felder angrenzend zu finden sind.

Das hört sich jetzt erstmal sehr kompliziert oder komplex an. Man kann das aber, zumindestens für den Anfang, in Einzelschritte unterteilen. Zum Beispiel erstmal nur in der Senkrechten nach leeren Feldern suchen. Dann die Funktion entsprechend erweitern um auch die waagerechten Reihen abzusuchen. Eventuell einfach mehrere Funktionen schreiben und die nacheinander aufrufen.

Hoffe das hilft Dir weiter.

Nachtrag:
Hier noch ein Tipp: Um festzustellen ob ein Feld leer ist oder nicht, liegt es nahe den Index dafür zu verwenden. Es gibt aber auch die Möglichkeit die "Tag-Eigenschaft" zu benutzen. Zwar liefert diese nur einen String zurück, aber der lässt ja konvertieren. Oder aber man definiert die Tag-Eigenschaft so durchdacht, dass Sie einem als String mehr von Nutzen ist als der Index.
Das Feld Oben-Links könnte zB den Tag "A1" haben usw...
 
Zuletzt bearbeitet:
Hi,

kann ja sein, dass ich zu dumm für diese Welt bin, aber ich weiß noch nicht, wie das gemeint ist mit belegt und leer :rolleyes:
 
Zurück