JavaScript. Учебник начального уровня - DarkGoodWIN 8 стр.


}

Я бы прочитал это так: поле «intRand» соответствует (равно) функции, которая принимает максимальное значение в качестве единственного параметра и возвращает случайное целое число от нуля до этого числа.

Аналогичным образом мы переносим функцию fillMines, делая её методом класса minesClass. Параметры этой функции уже не нужны, так как у метода класса есть доступ к его полям. Следует только не забывать перед обращением к полям класса писать «this.». Например, this.rowCount, this.mines и так далее.

Надеюсь мне хотя бы примерно удалось рассказать про то, как можно создавать и использовать классы в JavaScript и даже показать, что это может сделать программу понятнее. Если не вышло — значит я плохо старался… Однако у меня ещё остаётся надежда, что дальше всё станет понятнее. Тут затрагивались довольно трудные для понимания вещи и если что–то осталось непонятным — ничего удивительного и ничего страшного.

На самом деле в этой главе тоже не будет ничего нового. Всё основное, чтобы реализовать функциональность этой главы я уже рассказал. Но что поделать, надо довести начатое до конца, да и потом, даже если где–то в чём–то я повторюсь, так ведь повторение — мать учения.

В прошлой главе мы остановились на том, что у нас была табличка, в которой рисовались бомбы в виде символа "*" или клетки без бомб в виде точки. Но это не очень–то похоже на сапёр в который мы все привыкли играть. Там вроде как в каждой клетке пишется количество соседних с ней клеток в которых есть бомба.

Ну что же, давайте сделаем это и в нашей программе. Ниже я приведу код, а потом, как обычно, его прокомментирую.

<html>

<head>

head>

<script>

function minesClass(aRowCount, aColCount, aMinesCount)

{

this.intRand = function(maxVal)

{

return Math.floor((maxVal‑1) * Math.random() + 0.5) — 1;

}

this.fillMines = function()

{

var res = new Array(this.rowCount * this.colCount);

var mines = this.minesCount;

while (mines > 0)

{

var n = this.intRand(this.rowCount * this.colCount‑1);

if (res[n] != 1)

{

res[n] = 1;

mines--;

}

}

return res;

}

this.hasMine = function(i, j)

{

if ((i < 0) || (j < 0) || (i >= this.rowCount) || (j >= this.colCount))

return 0;

if (this.mines[i * this.rowCount + j] == 1)

return 1;

return 0;

}

this.checkCell = function(i, j)

{

if (this.hasMine(i, j))

return '*';

Назад Дальше