Sie sind hier 67
Richtigen Code schreiben
var location1 = randomLoc;
var location2 = location1 + 1;
var location3 = location2 + 1;
Benutze die zufällige
Position und die
folgenden zwei Felder.
Eine zufällige Position zuweisen
Das einzige Problem ist, dass die Funktion Zahlen
wie 0.
1
28, 0.830, 0.9 oder 0.42. zurückgibt.
Diese Zahlen liegen alle zwischen 0 und
1
(sind aber
nie genau
1
). Wir brauchen also eine Möglichkeit,
Zufallszahlen zwischen 0 und 4 zu erzeugen.
var randomLoc = Math.random();
Dies ist die Variable randomLoc.
Sie soll einen Wert zwischen 0
und 4 erhalten.
Math.random ist ein fester Teil
von JavaScript und gibt eine
Zufallszahl zurück.
Sobald Sie einen Startpunkt (zwischen 0 und 4) haben, können Sie
diesen und die folgenden zwei Positionen verwenden, um das Schiff
dort zu platzieren.
So weit, so gut, aber wie erzeugen wir eine Zufallszahl? Hierfür
wenden wir uns an JavaScript und seine eingebauten Funktionen.
JavaScript besitzt eine ganze Reihe eigener Funktionen für
mathematikbezogene Aufgaben. Hierzu gehören verschiedene
Möglichkeiten, Zufallszahlen zu erzeugen. Später in diesem
Buch werden wir uns näher mit JavaScript-eigenen und anderen
Funktionen beschäftigen.
Das weltberühmte Rezept zur
Erzeugung von Zufallszahlen
Wir beginnen mit der Funktion Math.random. Ihr Aufruf gibt eine
zufällige Dezimalzahl zurück:
Wir brauchen eine ganze Zahl zwischen 0 und 4, also 0, 1, 2, 3 oder 4, ohne Nach-
kommastellen wie 0,34 (beachten Sie, dass JavaScript anstelle des Dezimalkommas
einen Punkt verwendet!). Wir könnten die von
Math.random zurückgegebene Zahl
beispielsweise mit 5 multiplizieren. Etwa so:
68 Kapitel 2
Zufallszahlen benutzen
Zunächst multiplizieren wir die Zufallszahl mit
5. Dadurch erhalten wir eine Zahl zwischen
0 und 5 (ohne die 5 selbst), wie 0.
1
3983,
4.23
1
, 2.345
1
oder auch 4.999.
Mit Math.floor können wir die Zahlen auf
den nächsten ganzzahligen Wert abrunden.
0.
1
3983 wird beispielsweise zu 0, 2.34
wird zu 2, und 4.999 wird zu 4.
var randomLoc = Math.random() * 5;
Schon besser! Jetzt müssen wir nur noch die Nachkommastellen
loswerden, um eine Ganzzahl zu erhalten. Hierfür benutzen wir eine
weitere eingebaute Mathematik-Funktion mit dem Namen Math.floor:
var randomLoc = Math.floor(Math.random() * 5);
F:
Wir versuchen doch, eine Zahl
zwischen 0 und 5 erzeugen. Warum
enthält der Code dann 5, wie bei
Math.floor(Math.random() * 5)?
A: Gute Frage. Zunächst erzeugt Math.
random eine Zahl zwischen 0 und 1, aber
ohne die 1. Die größtmögliche Zahl, die
Math.random erzeugen kann, ist also 0.999.
Wenn Sie das mit 5 multiplizieren, ist die
höchstmögliche Zahl 4.999. Math.floor
rundet alle Zahlen ab. Das heißt, 1.2 wird
zu 1, ebenso 1.9999. Wenn wir eine Zahl
zwischen 0 und 4.999… erzeugen, wird alles
auf die Werte 0 bis 4 abgerundet. Sicher
gibt es noch andere Möglichkeiten – auch in
anderen Sprachen. Hier zeigen wir Ihnen die
in JavaScript übliche Methode.
F:
Das heißt, um eine Zufallszahl
zwischen 0 und 100 (ohne 100) zu
erzeugen, müsste ich schreiben:
Math.floor(Math.random() * 101).
Richtig?
A: Genau! Die Multiplikation mit 101
und die Verwendung von Math.floor zum
Abrunden stellt sicher, dass das Ergebnis
nicht größer ist als 100.
F:
Wofür sind die runden Klammern bei
Math.random() da?
A: Klammern werden bei jedem
Funktionsaufruf verwendet. Manchmal muss
der Funktion ein Wert übergeben werden,
z. B. für die Ausgabe einer Warnmeldung,
und manchmal ist das nicht nötig, wie bei
Math.random. Dennoch werden die runden
Klammern bei jedem Funktionsaufruf
gebraucht (egal ob es eine eingebaute
Funktion ist oder nicht). Machen Sie sich
darüber jetzt nicht zu viele Gedanken. Wir
werden im folgenden Kapitel genau darauf
eingehen.
F:
Meine Version von »Schiffe
versenken« funktioniert nicht richtig.
Außer der Überschrift »Spielen Sie Schiffe
versenken!« wird nichts angezeigt. Wie
kann ich rauskriegen, wo der Fehler liegt?
A: Genau für solche Zwecke ist
die Konsole da. Bei Fehlern wie einem
vergessenen Anführungszeichen für einen
String wird sich JavaScript normalerweise
über einen Syntaxfehler im Programm
beschweren und sagt Ihnen auch gleich, in
welcher Zeile des Programms der Fehler
vermutlich liegt. Manchmal sind die Fehler
aber auch subtiler. Wenn Sie beispielsweise
versehentlich schreiben: write isSunk = false
und nicht: write isSunk == false schreiben,
wird kein JavaScript-Fehler ausgegeben.
Trotzdem tut Ihr Code nicht, was er soll.
Benutzen Sie bei solchen Fehlern console.
log, um die Werte Ihrer Variablen an
verschiedenen Punkten auszugeben und so
den Fehler zu finden.
Nicht vergessen: * steht für Multiplikation.
Es gibt keine
Dummen Fragen

Get JavaScript-Programmierung von Kopf bis Fuß now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.