Ziel ist es, die Anzahl der Schüsse zu minimieren, die ich auf einem zufällig erzeugten Schlachtschiffbrett erhalte. Meine fireShot() -Methode soll bestimmen, ob der Punkt in meinem 2D-Array bereits beschossen wurde, ein Fehlschlag oder ein Treffer.Battleship Shot Firing [Java]
public boolean fireShot()
{
Random rand = new Random();
int i = rand.nextInt(10); //generate 2 random numbers for rows and columns
int j = rand.nextInt(10);
Point shot = new Point(i,j);
while (mapState[i][j] != empty){
j = rand.nextInt(10);
i = rand.nextInt(10);
mapState[i][j] = shotAt;
}
boolean hit = battleShip.shoot(shot);
if(hit == false){
mapState[i][j] = miss;
}
else if(hit == true){
mapState[i][j] = hitInt;
huntMode(i,j);
}
return false;
}
Die battleShip.shoot Methode gibt einen boolean, wenn der Punkt ein Boot trifft.
Das Problem ist, dass die Effizienz die gleiche ist und Elemente, die bereits verpasst oder getroffen wurden, nicht überspringt.
was ist dein Problem? –
@WasiAhmad verändert es die Effizienz überhaupt nicht. Das Programm sollte alle Elemente überspringen, die bereits getroffen oder verpasst wurden, aber das scheint es nicht zu tun. –
Möchten Sie eine Zufallszahl generieren, die vorher nicht generiert wurde? Was meintest du mit Effizienz? Warum sollte das Programm alle Elemente überspringen, die bereits getroffen oder verpasst wurden? Deine Frage ist noch nicht klar! –