jesteś tutaj
367
Łączenie wszystkiego w całość
Implementacja obiektu modelu
Skoro już wiesz, jak będziemy reprezentować okręty i trafienia, nadszedł czas, by
napisać trochę kodu. Najpierw utworzymy obiekt modelu, po czym weźmiemy
opracowaną przed chwilą strukturę danych
VKLSV
i dodamy ją do niego jako
właściwość. A skoro już się tym zajmujemy, warto pamiętać także o kilku innych
właściwościach, które będą potrzebne, takich jak
QXP6KLSV
, która będzie
przechowywać liczbę okrętów uczestniczących w grze. Pewnie chcesz
zapytać: „O co wam chodzi, przecież wiadomo, że w grze będą trzy
okręty. Po co więc ta właściwość
QXP6KLSV
?”. No cóż, a jeślibyś
chciał napisać następną, nieco trudniejszą wersję gry, w której trzeba
by zatopić cztery lub pięć okrętów? Dzięki temu, że nie podamy tej
liczby na stałe, lecz zapiszemy w formie właściwości (której później
będziemy używali w kodzie zamiast wartości stałej), możemy sobie
zaoszczędzić przyszłych kłopotów, kiedy będziemy chcieli zmienić
liczbę okrętów — wystarczy to zrobić w jednym miejscu.
A skoro już mówimy o „podawaniu czegoś na stałe”, to
podamy na stałe
położenie okrętów, choć jedynie tymczasowo. Kiedy będziemy wiedzieć, gdzie
znajdują się okręty, będzie łatwiej przetestować grę i na razie skoncentrować się na jej
logice. Kodem związanym z rozmieszczaniem okrętów w losowych miejscach zajmiemy
się nieco później.
A zatem, utwórzmy w końcu obiekt modelu.
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: [””, ””, ””] }]
};
Model jest obiektem.
Te trzy właściwości pozwolą nam nie podawać wartości na
stałe. Oto one: boardSize (wielkość siatki tworzącej planszę
gry), numShips (liczba okrętów biorących udział w grze)
oraz shipLength (liczba komórek planszy zajmowanych przez
jeden okręt, czyli 3).
Właściwość ships jest tablicą
obiektów ship, z których każdy
przechowuje informacje o położeniu
oraz trafieniach danego okrętu.
(Zauważ, że zmieniliśmy ships
ze zmiennej, której używaliśmy
wcześniej, na właściwość obiektu
model).
To już jest
całkiem sporo
informacji
określających
stan gry!
Nieco dalej zajmiemy się generowaniem
losowego położenia okrętów, jednak na
razie podamy je na stałe, by ułatwić
sobie testowanie gry.
Model
ships: informacje
RORNDOL]DFMLRNUĐWyZ
RUD]WUDILHQLDFK
shipsSunk: liczba
]DWRSLRQ\FK
RNUĐWyZ
numShipsOLF]EDRNUĐWyZ
ELRUċF\FKXG]LDâZJU]H
firePHWRGDVâXİċFD
GRRGGDZDQLDVWU]DâX
LRNUHĤODQLDF]\MHVWWR
VWU]DâFHOQ\F]\WHİQLH
shipLength: liczba
NRPyUHNVLDWNL
]DMPRZDQ\FKSU]H]
NDİG\RNUĐW
boardSizeZLHONRĤþ
VLDWNLWZRU]ċFHMSODQV]Đ
Właściwość shipsSunk (której podczas rozpoczynania gry
przypisywana będzie wartość 0) przechowuje informację
o liczbie okrętów zatopionych przez gracza.
Zwróć uwagę, że tablice locations oraz hits wszystkich okrętów zostały
podane na stałe. Dalej w książce dowiesz się, jak można je generować
dynamicznie.

Get Programowanie w JavaScript Rusz głową! 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.