Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Anzahl der benachbarten Minen berechnen und setzen
eigentlich nur die direkten Nachbar... beispielweise...wenn ich bei x=4; y=2....3 Minen als nachbar habe dann will ich da die 3 herausbekommen und mit hilfe meiner Settermethode die 3 setzen...
Ich dachte an eine doppelte for-Schleife... aber ich weiß nicht wie ich das hier implementieren soll, da ich in dieser Klasse keine Koordinaten habe... und nicht weiß wie ich die übergebenen Parameter dafür benutzen kann.
Vorher habe ich halt Minen gesetzt mit der Methode:
Code:
private void setzeMinen() {
Random zufallszahl=new Random();
int zufallsx=zufallszahl.nextInt(breite);
int zufallsy=zufallszahl.nextInt(hoehe);
board[zufallsy][zufallsy].vermint();
}
Also eigentlich brauchst du dafür keine For-Schleife Du musst nur nach oben, unten, links und rechts schauen und als Ausgangspunkt verwendest du dein Koordinaten Kontainer
Schick mal deine Klasse IKoordinate
Also eigentlich brauchst du dafür keine For-Schleife Du musst nur nach oben, unten, links und rechts schauen und als Ausgangspunkt verwendest du dein Koordinaten Kontainer
Schick mal deine Klasse IKoordinate
Meinst du 4 if abfragen? oder sogar 8 .... da die nachbarn diagonal zur position auch direkte nachbarn sind...
IKoordinate ist nur ein Interface...
Code:
public interface IKoordinate {
/**
* Gibt den x Wert zurueck.
*
* @return X Wert.
*/
public int getX();
/**
* Setzt eine neue x Position.
*
* @param x Neuer x Wert.
*/
public void setX(final int x);
/**
* Gibt den y Wert zurueck.
*
* @return Y Wert.
*/
public int getY();
/**
* Setzt eine neue y Position.
*
* @param y Neuer y Wert.
*/
public void setY(final int y);
}
Hey all, for a few of my college assignments I've found the need to check neighbouring cells in 2-dimensional arrays (grids). The solution I've used is a bit of a hack using exceptions, and I'm loo...
@lennero hat Dir ja bereits einen Link geschickt, in dem eine mögliche Lösung zu sehen ist. Ich würde die aber etwas anders gestalten:
Java:
for (int row = 0; row < 3; row++) {
for (int col = 0; col < 3; col++) {
// Das Feld, auf dem man steht, ist nicht vermint, daher
// muss man das mittlere Feld nicht unbedingt auslassen.
// Wenn man will, kann man das natürlich machen, einfach
// zusätzlich prüfen, ob col != row gilt:
// if (col != row && istVermint(col + x - 1, row + y - 1)) {
if (istVermint(col + x - 1, row + y - 1)) {
count++;
}
}
}
mit
Java:
boolean istVermint(int x, int y) {
if (y < 0 || y >= board.length || x < 0 || x >= board[0].length) {
return false; // ausserhalb des Spielfelds ist garantiert nichts vermint
}
return board[x][y].istVermint();
}
Der Vorteil ist, dass in den Schleifen nicht überprüft werden muss, ob sich das Koordinatenpaar auf dem Brett findet.
@lennero hat Dir ja bereits einen Link geschickt, in dem eine mögliche Lösung zu sehen ist. Ich würde die aber etwas anders gestalten:
Java:
for (int row = 0; row < 3; row++) {
for (int col = 0; col < 3; col++) {
// Das Feld, auf dem man steht, ist nicht vermint, daher
// muss man das mittlere Feld nicht unbedingt auslassen.
// Wenn man will, kann man das natürlich machen, einfach
// zusätzlich prüfen, ob col != row gilt:
// if (col != row && istVermint(col + x - 1, row + y - 1)) {
if (istVermint(col + x - 1, row + y - 1)) {
count++;
}
}
}
mit
Java:
boolean istVermint(int x, int y) {
if (y < 0 || y >= board.length || x < 0 || x >= board[0].length) {
return false; // ausserhalb des Spielfelds ist garantiert nichts vermint
}
return board[x][y].istVermint();
}
Der Vorteil ist, dass in den Schleifen nicht überprüft werden muss, ob sich das Koordinatenpaar auf dem Brett findet.