Hallo erstmal:)
Ich lerne jetzt seit ca. einem Jahr Java und wir (also meine Klasse) sind grade dabei ein Schiffe Versenken zu programmieren. Ich komme bei dem automatischen Schiffe setzen nicht weiter, bzw bei dem Prüfen ob der Hof des Schiffes frei ist.
Hier mal mein Code:
public boolean pruefeHof(int startX, int startY, int laenge, boolean lage) {
int breite = 3;
if (lage) { //waagerecht ,
for (int y = startY - 1; breite > 0; breite--, y++) {
int xLaenge = laenge + 2;
for (int x = startX - 1; xLaenge > 0; xLaenge--, x++) {
if (spielDaten[x][y] != 0) {
return false;
}
}
}
} else { //senkrecht
for (int x = startX - 1; breite > 0; breite--, x++) {
int xLaenge = laenge + 2;
for (int y = startY - 1; xLaenge > 0; xLaenge--, y++) {
if (spielDaten[x][y] != 0) {
return false;
}
}
}
}
return true;
}
Und jetzt noch das Alle Schiffe setzen programm:
public void setzeAlleSchiffe() {
int laenge = 3;
for (int anz = 5; anz >= 0; anz--) {
boolean lage = wuerfel.nextBoolean();
if (lage) { //waagerecht
do {
int startX = wuerfel.nextInt((12 - (laenge + 1)) - 2) + 2;
int startY = wuerfel.nextInt((12 - 2) - 2) + 2;
} while (pruefeHof(startX, startY, laenge, true));
} else { //senkrecht
do {
int startX = wuerfel.nextInt((12 - 2) - 2) + 2;
int startY = wuerfel.nextInt((12 - (laenge + 1)) - 2) + 2;
} while (pruefeHof(startX, startY, laenge, false));
}
}
}
Entschuldigung falls ich nerve, aber ich weiß echt nicht was ich falsch mach… Vielleicht liegt das auch daran, dass ich jetzt seit 2Tagen nur noch diesen Code anstarre. Ich sollte wirklich mal ne Pause machen
Und danke im Vorraus