Freie Felder bei Minesweeper automatisch aufdecken

Tobias K.

Erfahrenes Mitglied
moin


Wenn man beim Originalen MInesweeper auf ein freies Feld (ohne Zahl und Miene) klickt, "öffnen" sich auch alle anliegenden freien und Zahlenfelder und bei allen dadurch geöffneten passiert wieder das selbe, ihr kennt das ja.

Wie berechne ich am das am besten, also wie berechne ich die anliegenden Felder?


mfg
umbrasaxum
 
Zuletzt bearbeitet:

Tobias K.

Erfahrenes Mitglied
moin


Mag sein jedoch liegt das nicht in deinem ermessen.
Aber eigentlich ist es erlaubt, wenn es auf etwas spezielles zeigt.

Außerdem kannst du dir solche Kommentare sparen (sammel deine Beiträge wo anders), dafür gibt es hier Leute.


mfg
umbrasaxum
 

MFC openGL

Erfahrenes Mitglied
Wie hast du denn das Spielfeld aufgebaut ?

Per Array wo z.b. 0 = nicht aufgedeckt, 1 = aufgedeckt/ohne bombe, 2 = mit bombe markiert
heisst ?

Wenn ja brauchst du doch um deinen Arraypunkt nur abfragen ob die Felder x+-1, y+-1 und y+-1/x+-1 markiert/schon aufgedeckt sind, dann setzt du einfach einen neuen Status und fragst ab ob in deiner Original Bomben Liste dort eine Bombe gewesen ist, wenn ja -> BOOOOOM, wenn nein, neuer Status mit aufgedeckt(1) und weiter im Text...

Wenn du das anders gemacht hast, scheib mal wie und dann kann man das evtl anpassen...

Gruss

MFC OpenGL
 

Tobias K.

Erfahrenes Mitglied
moin


Ja die Attribute jedes einzelnen Feldes ist in einer Struktur gespeichert.
Das mit den Bomben ist auch kein Problem, ich poste einfach mal mein Programm.

http://umbrasaxum.um.funpic.de/Mienensuchen.exe

Zum vergleich könnt ihr/du ja mal das originale Spielen und sehen was passiert wenn ein leeres Feld geklickt wird, das sollte mein Problem deutlich machen.


mfg
umbrasaxum
 
Man könnte das ganze rekursiv angehen:

Pseudocode:
Code:
funktion deckeAuf(feld)
{
	if (feld is bombe) {
		boom();
		return;
	}

	markiereAlsAufgedeckt(feld);

	foreach (nachbarfeld) {
		if (nachbarfeld is bombe
			or nachbarfeld is aufgedeckt) continue;
		else deckeAuf(nachbarfeld);
	}
}
Eventuell muss man noch aufpassen, dass man in keine Endlosschleife gerät bei der Überprüfung der Nachbarfelder...
 

Kachelator

Peter Jerz
umbrasaxum hat gesagt.:
moin


Mag sein jedoch liegt das nicht in deinem ermessen.
Aber eigentlich ist es erlaubt, wenn es auf etwas spezielles zeigt.

Außerdem kannst du dir solche Kommentare sparen (sammel deine Beiträge wo anders), dafür gibt es hier Leute.


mfg
umbrasaxum
Kein Grund zum Schimpfen! Der Link ist tatsächlich nicht gut. Der Host deines Bildes erlaubt das externe Linken nicht; das hat nichts mit dem Forum zu tun. Sieh selbst:
 

Anhänge

  • linkextern.jpg
    linkextern.jpg
    5,6 KB · Aufrufe: 780