Sie sind hier 341
Die Einzelteile zusammenfügen
var model = {
boardSize: 7,
numShips: 3,
shipLength: 3,
shipsSunk: 0,
ships: [{ locations: ["06", "16", "26"], hits: ["", "", ""] },
{ locations: ["24", "34", "44"], hits: ["", "", ""] },
{ locations: ["10", "11", "12"], hits: ["", "", ""] }]
};
Das Model-Objekt implementieren
Nachdem Sie wissen, wie Schiffe und Treffer strukturiert werden, wollen wir
endlich etwas Code schreiben. Zuerst erstellen wir das Model-Objekt. Hierfür
benutzen wir die gerade erstellte ships-Datenstruktur und fügen sie dem Objekt
als Eigenschaft hinzu. Und da wir gerade dabei sind, bauen wir gleich noch ein
paar weitere Eigenschaften ein, die ebenfalls gebraucht werden, wie
numShips zum Speichern der Anzahl der Schiffe im Spiel. Aber
wofür soll das gut sein? Schließlich wissen wir doch, dass es drei
Schiffe sind. Was passiert aber, wenn Sie eine neue Version
erstellen wollen, die schwerer ist und vier oder fünf Schiffe
unterstützt? Anstatt den Wert »hartzukodieren«, bietet es sich
an, eine Eigenschaft zu benutzen (und diese im Code anstelle
der Zahl einzusetzen). So können wir Kopfschmerzen vermei-
den, falls die Zahl der Schiffe irgendwann verändert werden
soll, da wir den Wert nur an einer Stelle ändern müssen.
Übrigens werden wir die anfänglichen Werte trotzdem erst einmal
hartkodieren. Dadurch können wir das Spiel leichter testen und
uns auf die Kernlogik des Spiels konzentrieren. Mit dem Code zur zufälligen
Positionierung der Schiffe beschäftigen wir uns etwas später.
Und damit zur Erstellung des Model-Objekts:
Das Model ist ein Objekt
Diese drei Eigenschaften verhindern, dass wir Werte
hartkodieren müssen. Es sind: boardSize (Größe des
Spielfeldrasters), numShips (Anzahl der Schiffe im Spiel)
und shipLength (Anzahl der Positionen pro Schiff, 3)
Die Eigenschaft ships ist das Array
mit den Schiff-Objekten, in denen die
Positionen und Treffer der einzelnen
Schiffe gespeichert werden. (Beachten
Sie, dass wir die Variable ships hier durch
eine entsprechende Eigenschaft für das
Model-Objekt ausgetauscht haben.)
Das sind schon
ziemlich viele
Zustands-
informationen!
Später erzeugen wir die Positionen der
Schiffe zufällig. Um das Spiel zu testen,
sind sie im Moment noch hartkodiert.
Model
ships: Die Positionen und
Treffer der Schiffe.
shipsSunk: Wie
viele Schiffe
versenkt wurden.
numShips: Die Anzahl
der Schiffe im Spiel.
fire: Eine Methode zum
Feuern auf ein Schiff und
zum Ermitteln, ob der
Schuss ein Treffer oder
ein Fehlversuch war.
shipLength: Die
Anzahl der Positionen
pro Schiff.
boardSize: Die Größe des
Rasters auf dem Spielfeld.
shipsSunk (zu Beginn des Spiels mit 0 initialisiert)
enthält die Anzahl der bereits versenkten Schiffe.
Auch die Größen der Arrays für Positionen und Treffer sind
aktuell noch hartkodiert. Später in diesem Buch werden Sie
lernen, wie man Arrays auch dynamisch erzeugen kann.

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.