Файл: Беляев С А - Разработка игр на языке JavaScript - 2016.pdf

ВУЗ: Не указан

Категория: Книга

Дисциплина: Программирование

Добавлен: 25.10.2018

Просмотров: 7582

Скачиваний: 136

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

Базовые элементы языка

11

При необходимости использования для холста разме

ров экрана возможно обращение к глобальной перемен
ной окна window: window.innerHeight хранит высоту ви
димой части окна, window.innerWidth — ширину видимой
части окна. Просмотреть все глобальные переменные мож
но в режиме отладки, в различных браузерах они вызыва
ются поразному. Большинство браузеров, как и Google
Chrome, открывают панель разработчика при нажатии
клавиши «F12». В закладке «Sources» можно для выбран
ного исходного файла установить точку остановки (нажать
левой клавишей мыши на номере строки для JavaScript),
обновить страницу и в разделе Global просмотреть все гло
бальные переменные, доступные в выбранной точке оста
новки (рис. 1.3).

Рис. 1.3

Просмотр глобальных переменных в Google Chrome


background image

12

Глава 1

Не рекомендуется использовать в программе имена

переменных, совпадающие по написанию с глобальными
переменными.

У разработчика есть возможность отобразить интере

сующую его фигуру, например, зигзаг (рис. 1.4).

<!DOCTYPE html>

<html>

<body>

<canvas id="canvasId" width="300" height="100"

style="border:1px solid magenta;"></canvas>

<div id="result"></div>

<script>

var canvas = document.getElementById("canvasId");

var ctx = canvas.getContext("2d");

ctx.strokeText("Çèãçàã", 10, 10); // Íàïèñàòü òåêñò

ctx.stroke(); // Îòîáðàçèòü òåêñò

ctx.lineWidth = 10; // Óñòàíîâèòü øèðèíó ëèíèè

ctx.strokeStyle = "#0000ff"; // Óñòàíîâèòü öâåò ëèíèè - ñèíèé

var x = [40, 70, 100, 130, 160, 190]; // Ìàññèâ

var y = [40, 80, 40, 80, 40, 80];

ctx.moveTo(10, 80); // Ïåðåìåñòèòü

ctx.beginPath(); // Íà÷àëî ïóòè

for(var i = 0; i < x.length; i++) { // Öèêë

ctx.lineTo(x[i], y[i]);

}

ctx.stroke(); // Îòîáðàçèòü êðèâóþ

</script>

</body>

</html>

Рис. 1.4

Отображение зигзага


background image

Базовые элементы языка

13

Здесь функция контекста strokeText выводит текст в

заданные координаты (xy), lineWidth настраивает ши
рину линии контура, strokeStyle — цвет. Важно отметить,
что цвет в HTML может задаваться не только ключевыми
словами, но и в так называемом формате RGB (red, green,
blue) — красный, зеленый, голубой. Соответственно, один
и тот же красный цвет может быть представлен в виде 'red'
(название цвета), '#ff0000' (шестнадцатеричный формат
записи RGB), 'rgb(255,0,0)' (десятичный формат записи
RGB). При этом значение каждого цвета может быть в диа
пазоне от 0 до 255 в десятичной записи или от 00 до FF
в шестнадцатеричной.

В приведенном примере x и y являются массивами с

предопределенными значениями, при этом значения пе
речислены через запятую в квадратных скобках. Массив
при обращении к переменной length возвращает свою дли
ну (сколько значений в них сохранено), для обращения к
его элементу необходимо после имени массива в квадрат
ных скобках указать и номер. Важно отметить, что пер
вый элемент массива имеет номер 0.

Цикл for характеризуется тремя параметрами, пере

численными через точку с запятой. Первый параметр —
инициализация переменных, которые будут использовать
ся внутри массива, второй параметр — условие, которое
должно быть верно, пока цикл выполняется, третий пара
метр — изменение переменных по окончании каждого
цикла. В приведенном примере введена дополнительная
переменная i, которой в самом начале присвоено значение
0, условием выполнения цикла является: i меньше длины
массива  x, по окончании цикла использована конструк
ция i++, которая обеспечивает увеличение на единицу пе
ременной i при каждом вызове.

Аналогичный результат может быть достигнут с ис

пользованием одного массива.

<!DOCTYPE html>

<html>

<body>

<canvas id="canvasId" width="300" height="100"

style="border:1px solid magenta;"></canvas>


background image

14

Глава 1

<div id="result"></div>

<script>

var canvas = document.getElementById("canvasId");

var ctx = canvas.getContext("2d");

ctx.strokeText("Çèãçàã", 10, 10); // Íàïèñàòü òåêñò

ctx.stroke(); // Îòîáðàçèòü òåêñò

ctx.lineWidth = 10; // Óñòàíîâèòü øèðèíó ëèíèè

ctx.strokeStyle = "#0000ff"; // Óñòàíîâèòü öâåò ëèíèè - ñèíèé

var x = [40, 70, 100, 130, 160, 190]; // Ìàññèâ

var y = 80; // Ïåðåìåííàÿ y

ctx.moveTo(10, 80); // Ïåðåìåñòèòü

ctx.beginPath(); // Íà÷àëî ïóòè

for(var i = 0; i < x.length; i++) { // Öèêë

if(y > 40) y = 40; else y = 80; // Óñëîâèå

ctx.lineTo(x[i], y);

}

ctx.stroke(); // Îòîáðàçèòü êðèâóþ

</script>

</body>

</html>

В данном примере — переменная, которой присвое

но начальное значение 80. В цикл добавлено условие if,
которое проверяет, если y больше 40, то y присваивается
значение 40, иначе (else) присваивается 80. Получается
тот же результат, что представлен на рисунке 1.4, но цикл
работает более надежно, так как нет необходимости под
держивать одинаковую длину у двух массивов, как в пре
дыдущем примере.

1.4.

ОТОБРАЖЕНИЕ

НЕСКОЛЬКИХ ПРЯМОУГОЛЬНИКОВ

Несколько прямоугольников разных цветов можно

отобразить следующим образом (рис. 1.5).

<!DOCTYPE html>

<html>

<body>

 <canvas id="canvasId" width="300" height="100"

style="border:1px solid magenta;"></canvas>


background image

Базовые элементы языка

15

<div id="result"></div>

<script>

var canvas = document.getElementById("canvasId");

var ctx = canvas.getContext("2d");

ctx.lineWidth = 5; // Óñòàíîâèòü øèðèíó ëèíèè

function square(side, x, color) {

ctx.strokeStyle = color; // Óñòàíîâèòü öâåò ëèíèè - color

ctx.strokeRect(x, 10, side, side); // Ðèñóåì êâàäðàò ñî

// ñòîðîíîé side

ctx.stroke(); // Íàðèñîâàòü

}

square(15, 10, 'red'); // Êâàäðàò 15 íà 15

square(25, 50, 'green'); // Êâàäðàò 25 íà 25

square(35, 110, 'blue'); // Êâàäðàò 35 íà 35

square(45, 180, 'brown'); // Êâàäðàò 45 íà 45

</script>

</body>

</html>

В приведенном примере для отображения квадрата со

здается функция (function) с именем square и параметра
ми: длина стороны (side), координата по горизонтали (x)
и цвет (color). Внутри функции есть обращение к глобаль
ной переменной ctx и к локальным переменным, переда
ваемым в качестве параметров. Границы функции огра
ничены фигурными скобками. Функция вызывается че
тыре раза.

Того же результата можно было достигнуть, исполь

зуя объекты.

Рис. 1.5

Отображение нескольких прямоугольников