Generiert Zufällige Zahl im 2D-Array
Erstelle ich ein Spiel von Kriegsschiffen mit Java und ich habe Probleme bei der Generierung 2 zufällige zahlen, die nach dem Zufallsprinzip wählen Sie einen Ort auf der battleship board. Beispielsweise hat der computer nach dem Zufallsprinzip einen Platz auf der platine zu platzieren der Schiffe (und später zu Schießen).
Habe ich einen 2D-array:
int rows = 10;
int cols = 10;
char [][] grid;
grid = new char[rows][cols];
Und dann versucht, mehrere unterschiedliche Möglichkeiten, um den zwei Zufallszahlen im array, aber ich kann nicht ankommen es zu wirken. Hier ist ein Beispiel, was ich versucht habe:
int randomPos = (char) (Math.random() * (grid[rows][cols] + 1));
Fragen Sie mich bitte einige Fragen, wenn dies nicht sinnvoll.
Sean
Ist das für die KI-raten Standorten zu Bomben? Wenn dem so ist, wollen Sie nicht doppelte Standorte, so kann es am besten, um alle möglichen Standorte in einer Liste dann
Taylor ja, aber ich hatte angenommen, ich hätte das gleiche zu tun, für die Auswahl an zufälligen Positionen für den computer, um Ihre Schiffe. Was tun?
Mischen Sie einfach eine neue Anordnung der Elemente in einer Liste in einer zufälligen Reihenfolge. Platzieren Schiffe auf dem Spielfeld ist eine ganz andere Sache. In diesem Fall wird der einfachste Ansatz ist die brute-force - nur weiter versuchen, die zufällige Orte und Richtungen, bis ein Schiff passt, wiederholen Sie die gleichen für alle Schiffe platziert werden.
java.util.Collections.shuffle(List)
.Taylor ja, aber ich hatte angenommen, ich hätte das gleiche zu tun, für die Auswahl an zufälligen Positionen für den computer, um Ihre Schiffe. Was tun?
Mischen Sie einfach eine neue Anordnung der Elemente in einer Liste in einer zufälligen Reihenfolge. Platzieren Schiffe auf dem Spielfeld ist eine ganz andere Sache. In diesem Fall wird der einfachste Ansatz ist die brute-force - nur weiter versuchen, die zufällige Orte und Richtungen, bis ein Schiff passt, wiederholen Sie die gleichen für alle Schiffe platziert werden.
InformationsquelleAutor Sean | 2011-07-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Math.random()
erzeugt eine Dezimalzahl. Es macht keinen Sinn, um Platz3.5779789689689...
(oder was auch immer Sie sich beziehen), so verwenden Sie dieMath.floor()
Methode, die Runden, die Zahl in den nächsten integer. Und wie @Sanjay erklärt, generieren Sie die zahlen getrennt...Nun müssen Sie die tatsächliche ganzen zahlen, mit dem Sie arbeiten können.
Ja, aber wenn Sie das array für etwas anderes nicht löschen.
Okay, danke!
Ich bin neu hier... wie kann ich das annehmen?
Klicken Sie einfach auf das kleine Häkchen unter der up - /down-Pfeile in der linken oberen Ecke meiner Antwort.
InformationsquelleAutor fireshadow52
Erzeugt zwei Zufallszahlen separat und verwenden Sie einen index für das board. Zu aufwändig:
In Ihrem Fall, ist die Bandbreite der zufällige Zahl zwischen 0 und 9 (einschließlich der beiden).
InformationsquelleAutor Sanjay T. Sharma
Ich würde nicht mit char als meine grid-Typ, aber der code oben funktioniert alles das gleiche, unabhängig von der Art der in dem array.
InformationsquelleAutor chubbsondubs
Versuchen, diese erklären dies ist ein ivar:
InformationsquelleAutor Oscar Gomez