minesweeper

jeansmander

Mitglied
Hallo Java-Gemeinde.

Habe mal wieder ein kleines Problem. Programmiere gerade ein Minesweeper. Bekomme aber die Methode mit dem zählen der Minen auf den Nachbarfeldern nicht zurecht. Habe am Rand immer einen Überlauf. Bekomme in aber nicht weg. Ist sicher ein blöder denkfehler.

Da der derzeit größte Fehler nur in dieser Methode liegt poste ich nur diese. Möchte nicht mit der Tür ins Haus fallen.

Mein zweites Problem liegt daran das ich den IntWert aus der countBomb Methode in ein char[][] spiele. Bekomme aber wie zu erwarten war keinen IntWert ausgeben. Kann ich dieses Problem einfach lösen oder muss ich meine char[][] in einen int[][] umwandeln.

[Java] static int countBomb(){

int c = 1; // column
int r = 1; // row
int c1 = 1;
int r1 = 1;

bombcnt = 0;

if(moveRow1 == 0){
r = 0;
r1 = 1;
}// if
if(moveRow1 == sizeField){
r = 1;
r1 = 0;
}// if

if(moveColumn1 == 0){
c = 0;
c1 = 1;
}// if
if(moveColumn1 == sizeField){
c = 1;
c1 = 0;
}// if

for(int i = moveRow1 - r; i <= moveRow1 + r1; i++){
for(int j = moveColumn1 - c; j <= moveColumn1 + c1; j++){
if(minesField1[j] == 'B'){
bombcnt++;
}//if

}//for
}//for

return bombcnt;
}// countBomb
[/Java]

Danke Jeans
 

Marco13

Top Contributor
Java:
System.out.println("Greife von "+moveRow1+" "+moveColumn1+" aus auf "+i+" "+j+" zu");
if(minesField1[i][j] == 'B'){
..

Das mit dem int und char müßtest du nochmal erklären. Oder geht es nur um ein
Code:
System.out.println([b](int)[/b]charArray[x][y]);
?
 

Landei

Top Contributor
Bekomme aber die Methode mit dem zählen der Minen auf den Nachbarfeldern nicht zurecht. Habe am Rand immer einen Überlauf. Bekomme in aber nicht weg. Ist sicher ein blöder denkfehler.

Bei vielen Brettspielen (aber auch Tetris, Pacman und so) hat sich bewährt, einen unsichtbaren Rand von geeigneten Feldern um die eigentliche Spielfläche zu haben, so dass man "automatisch" blockiert wird, oder wie in deinem Fall richtig gezählt wird.
 

Ähnliche Java Themen

Neue Themen


Oben