58 Kapitel 2
Den Benutzer informieren
Das und den Code zum Ermitteln, ob das Schiff versenkt wurde, bauen wir nun
in den Rest des Programms ein:
// Hier werden die Variablen deklariert.
while (isSunk == false) {
guess = prompt("Anlegen, Zielen, Feuer! (Geben Sie eine Zahl zwischen 0 und 6 ein):");
if (guess < 0 || guess > 6) {
alert("Diese Zahl liegt nicht auf dem Raster!");
} else {
guesses = guesses + 1;
if (guess == location1 || guess == location2 || guess = = location3) {
hits = hits + 1;
if (hits == 3) {
isSunk = true;
alert("Schiff versenkt!");
}
}
}
}
var stats = "Sie haben " + guesses + " Versuche gebraucht, um das Schiff zu versenken. " +
"Das enspricht einer Genauigkeit von " + (3/guesses);
alert(stats);
FALLS die Benutzereingabe auf
eine Zelle des Schiffs passt
ADDIERE 1 zur Anzahl der
Treffer (hits)
ADDIERE 1 zur
Variablen guesses
FALLS die Anzahl der
Treffer 3 entspricht
Etwas Spielanalyse für den Benutzer
Sobald isSunk den Wert true hat, wird die Schleife nicht mehr wiederholt. Ja, das
Programm, das wir jetzt so gut kennen, hört auf, die Schleife auszuführen, und ehe
Sie sich versehen, ist das Spiel vorbei. Allerdings sollten wir dem Benutzer noch
mitteilen, wie er sich geschlagen hat. Und dies ist der dafür nötige Code:
var stats = "Sie haben " + guesses + " Versuche gebraucht, um das Schiff zu versenken. " +
"Das entspricht einer Genauigkeit von " + (3/guesses);
alert(stats);
Hier erzeugen wir einen String mit der Nachricht für den Benutzer. Er enthält
die Anzahl der Versuche und eine Analyse seiner Genauigkeit. Wie Sie sehen,
teilen wir den String in mehrere Teile auf (einerseits, um die Variable guesses
einzufügen, und andererseits, um den String auf zwei Zeilen zu verteilen).
Hierfür benutzen wir den Verkettungs-(concatenation-)Operator. Geben Sie
diesen Code zunächst einfach ein, wir werden gleich erklären, was hier passiert.
SAGE dem
Benutzer den
Spielstand (stats)
SETZE isSunk auf
den Wert true
SAGE dem Benutzer:
»Schiff versenkt!«
SCHLEIFE: solange
das Schiff nicht ver-
senkt ist
HOLE den Rateversuch
des Benutzers
Schleife erstellen und
Benutzereingaben einlesen
Benutzereingaben
überprüfen
Testen, ob das Schiff
versenkt wurde
Bericht an Benutzer ausgeben
Sie sind hier 59
Richtigen Code schreiben
// Hier werden die Variablen deklariert.
while (isSunk == false) {
guess = prompt("Anlegen, Zielen, Feuer! (Geben Sie eine Zahl zwischen 0 und 6 ein):");
if (guess < 0 || guess > 6) {
alert("Diese Zahl liegt nicht auf dem Raster!");
} else {
guesses = guesses + 1;
if (guess == location1 || guess == location2 || guess = = location3) {
hits = hits + 1;
if (hits == 3) {
isSunk = true;
alert("Schiff versenkt!");
}
}
}
}
var stats = "Sie haben " + guesses + " Versuche gebraucht, um das Schiff zu versenken. " +
"Das enspricht einer Genauigkeit von " + (3/guesses);
alert(stats);
Erinnern Sie sich noch daran, dass wir gesagt haben, Pseudocode sei oft nicht perfekt?
Tatsächlich haben wir etwas vergessen. Der Benutzer erfährt nicht, ob er getroffen hat (oder
nicht). Können Sie die fehlenden Codestücke an den richtigen Stellen einbauen?
// Hier werden die Variablen deklariert.
while (isSunk == false) {
guess = prompt("Anlegen, Zielen, Feuer! (Geben Sie eine Zahl zwischen 0 und 6 ein):");
if (guess < 0 || guess > 6) {
alert("Diese Zahl liegt nicht auf dem Raster!");
} else {
guesses = guesses + 1;
if (guess == location1 || guess == location2 || guess = = location3) {
hits = hits + 1;
if (hits == 3) {
isSunk = true;
alert("Schiff versenkt!");
}
}
}
}
var stats = "Sie haben " + guesses + " Versuche gebraucht, um das Schiff zu versenken. " +
"Das entspricht einer Genauigkeit von " + (3/guesses);
alert(stats);
alert("TREFFER!");
alert("DANEBEN");
else {
}
Hier ist der Code, den Sie noch einbauen müssen.
Das sind ganz schön viele geschweifte Klammern, die zusammenpassen
müssen. Wenn Sie die Klammerpaare nicht finden können, malen Sie sich
einfach ein paar Hilfslinien direkt hier ins Buch, dann ist es einfacher.
Übung

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.