jesteś tutaj
391
Implementacja metody generateShip
Metoda
JHQHUDWH6KLS
tworzy tablicę zawierającą losowo wygenerowane współrzędne
pól zajmowanych przez jeden okręt, przy czym nie zwraca uwagi na to, czy będą one
kolidowały z położeniem innych okrętów. Metodę tę napiszemy w kilku krokach.
Pierwszym będzie losowy wybór kierunku rozmieszczenia okrętu, a może on być
umieszczony w pionie lub poziomie. Kierunek ten wybierzemy na podstawie wartości
liczby losowej. Jeśli liczba będzie równa
1
, przyjmiemy, że okręt jest rozmieszczony
w poziomie; jeśli wylosowana zostanie liczba
0
, okręt będzie rozmieszczony w pionie.
Do wyboru liczby losowej użyjemy naszych starych znajomych, czyli metod
0DWKUDQGRP
oraz
0DWKIORRU
, dokładnie tak samo, jak robiliśmy to wcześniej.
generateShip: function() {
var direction = Math.floor(Math.random() * 2);
var row, col;
if (direction === 1) {
// Generujemy poczÈtkowe pole okrÚtu w ukïadzie poziomym.
} else {
// Generujemy poczÈtkowe pole okrÚtu w ukïadzie pionowym.
}
var newShipLocations = [];
for (var i = 0; i < this.shipLength; i++) {
if (direction === 1) {
// Dodajemy do tablicy pola okrÚtu w ukïadzie poziomym.
} else {
// Dodajemy do tablicy pola okrÚtu w ukïadzie pionowym.
}
}
return newShipLocations;
},
Używamy metody Math.random, by wygenerować
liczbę z zakresu od 0 do 1, mnożymy wynik
razy 2, by uzyskać liczbę z zakresu od
0 do 2 (jednak mniejszą od 2). Następnie
przekształcamy tę liczbę na 0 lub 1
przy użyciu metody Math.floor.
Generacja
losowych liczb
0 i 1 przypomina
rzucanie monetą.
Przyjmujemy, że jeśli zmienna
direction ma wartość 1,
okręt będzie rozmieszczony
w poziomie...
…a jeśli zmienna direction będzie
mieć wartość 0, okręt będzie
rozmieszczony w pionie.
Określanie współrzędnych pól zajmowanych przez
nowy okręt zaczynamy od definiowania pustej
tablicy, a potem kolejno będziemy do niej dodawać
współrzędne następnych pól.
Najpierw wygenerujemy pierwsze pole zajmowane przez nowy
okręt, np. wiersz = 0 i kolumna = 3. W zależności od kierunku,
początkowe położenie okrętu będzie określane w oparciu
o nieco inne reguły (już za chwilę przekonasz się, dlaczego).
Liczba iteracji pętli
odpowiada długości okrętu…
…a podczas każdej z nich
dodajemy do tablicy
newShipLocations współrzędne
jednego pola. Także tutaj
musimy zastosować nieco
odmienny kod, zależnie do
kierunku, w jakim okręt będzie
rozmieszczany.
Resztę kodu zaczniemy uzupełniać
od następnej strony.
Po wygenerowaniu wszystkich
pól zwracamy tablicę.
Także tę metodę dodajemy do obiektu modelu.
Łączenie wszystkiego w całość
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.