return-Wert verwenden?

tigull

Mitglied
Ich stehe mal wieder an bei meinem Konsolen-Minesweeper.

Ich habe mehrere Klassen. Von Bedeutung sind jetzt Raster und Zelle. Ich habe in der Klasse Raster ein 2D-Array namens feld, das mit Zellen gefüllt ist. Im Objekt Zelle habe ich Datenfelder wie
Java:
boolean sichtbar
oder
Java:
int anzahlminen
. Ursprünglich hatte ich diese auf public und konnte sie so aus anderen Klassen mit Punktnotation abrufen. Aber nun habe ich erfahren, dass das für die Bewertung schlecht ist, wenn man diese Datenfelder auf public hat, sicherheitstechnisch ...
Deshalb möchte ich nun den anzahlminen-Wert mit einer Methode abrufen. Diese ist in der Klasse Zelle und sieht folgendermassen aus:

Java:
public int gibAnzahlminen() {
		return anzahlminen;
	}

In der Klasse Raster möchte ich diesen return-Wert nun weiterverwenden. Aber wie stelle ich das an?
Ich habe es mal so versucht, aber da scheint was falsch zu sein.
Java:
int returnwert = (feld[wertx][werty].gibAnzahlminen);

Könnt ihr mir helfen?
 
Danke, das war der Fehler. Aber das nächste Problem bahnt sich bereits an.
Ich muss in meinem Minesweeper-Spielfeld, wenn ich auf ein leeres Feld klicke, alle leeren Felder im Umfeld sichtbar machen (sichtbar ist ein boolean-Wert, den jedes Objekt in meinem Array hat) sowie das erste Feld mit Zahl und dann nicht mehr weiter. Aber mit x/y-Koordinate erhöhen und verkleinern ist das irgendwie nicht möglich. Hat jemand eine Idee?
 
Bis jetzt hab ich es so, dass rund um das betroffene 0-Feld die Felder aufgedeckt werden. Und dann müsste eigentlich bei jedem Feld, das 0 war, diese Methode wieder aufgerufen werden ... hmmm ich muss das nochmal ein bisschen durchdenken.
 
StackOverflowError im zusammenhang mit Rekursion kann IME 2 Ursachen haben:
1. Endlosrekursion
2. Einen zu kleinen Stack (Windows 32 BIt System haben dieses Problem), nach ca. 4000-5000 rekursiven aufrufen hast du dann den StackOverflowError
 

Neue Themen


Zurück
Oben