Ник Морган - JavaScript для детей. Самоучитель по программированию

Здесь есть возможность читать онлайн «Ник Морган - JavaScript для детей. Самоучитель по программированию» — ознакомительный отрывок электронной книги совершенно бесплатно, а после прочтения отрывка купить полную версию. В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Год выпуска: 2016, Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

JavaScript для детей. Самоучитель по программированию: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «JavaScript для детей. Самоучитель по программированию»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

JavaScript для детей. Самоучитель по программированию — читать онлайн ознакомительный отрывок

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «JavaScript для детей. Самоучитель по программированию», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

мы можем найти длину гипотенузы, взяв ква-

дратный корень от a2 + b2 .

Чтобы найти расстояние между кликом и кла-

дом, мы рассматриваем эти две точки как углы

прямоугольного треугольника (см. рис. 11.3).

В функции getDistance переменная diffX — это длина горизонталь-

ной стороны треугольника, а diffY — длина вертикальной стороны.

Найти нужное нам расстояние — значит найти длину гипоте-

нузы, зная длины diffX и diffY. Пример такого вычисления показан

на рис. 11.3.

0

1

2

3

4

5

0

x

1

diffX = 3 – 1

target: (1, 2)

= 2

2

diffY = 3 – 2

= 1

3

event: (3, 3)

4

Гипотенуза = √(diffX2 + diffY2)

= √(22 + 12)

= √(4 + 1)

= √5

5

= 2.236

y

Рис. 11.3. Вычисление гипотенузы как расстояния между кликом и кладом

Чтобы найти гипотенузу, сначала нужно возвести diffX и diffY

в квадрат. Затем мы складываем эти значения и извлекаем из суммы

11. Пишем игру «Найди клад!» 171

квадратный корень с помощью JavaScript-функции Math.sqrt.

Целиком формула для вычисления расстояния между кликом и кладом

выглядит так:

Math.sqrt((diffX * diffX) + (diffY * diffY))

Функция getDistance вычисляет это выражение и возвращает

результат.

Сообщаем игроку, насколько он близок к цели

Зная расстояние между кликом и кладом, остается отобразить под-

сказку, которая сообщала бы игроку, насколько близко он подошел, —

но без конкретных цифр. Для этого создадим следующую функцию

Hint —

getDistanceHint:

подсказка

var getDistanceHint = function (distance) {

if (distance < 10) {

return "Обожжешься!";

} else if (distance < 20) {

return "Очень горячо";

} else if (distance < 40) {

return "Горячо";

} else if (distance < 80) {

return "Тепло";

} else if (distance < 160) {

return "Холодно";

} else if (distance < 320) {

return "Очень холодно";

} else {

return "Замерзнешь!";

}

};

Эта функция возвращает одну из строк в зависимости от передан-

ного ей расстояния до клада. Если это расстояние меньше 10, она вер-

нет «Обожжешься!». Для расстояния от 10 до 20 функция вернет «Очень

горячо». По мере увеличения расстояния функция будет сообщать о все

большем холоде, вплоть до расстояния в 320 пикселей, начиная с кото-

рого функция возвращает строку «Замерзнешь!».

Отображать эти сообщения мы будем, задавая их как текстовое

содержимое элемента p на нашей странице. Следующий код вычис-

лит расстояние, получит нужную строку с сообщением и отобразит эту

строку:

172 Часть II. Продвинутый JavaScript

var distance = getDistance(event, target);

var distanceHint = getDistanceHint(distance);

$("#distance").text(distanceHint);

Как видите, сначала мы вызываем getDistance, сохраняя возвра-

щенное значение в переменной distance. Затем мы передаем distance

в функцию getDistanceHint, чтобы получить соответствующую

строку подсказки и сохранить ее в переменной distanceHint.

Код $("#distance").text(distanceHint); находит элемент, id

которого равен "distance" (в нашем случае это элемент p), и меняет его

текст на значение distanceHint, так что всякий раз при клике по карте

наша веб-страничка сообщает игроку, насколько близко он подошел к цели.

Проверка на выигрыш

И наконец, наш обработчик кликов должен проверить, не попал ли игрок

в цель. Поскольку один пиксель очень мал, мы не будем вынуждать

игрока кликать в точности по месту с кладом, а засчитаем за победу клик

на расстоянии менее восьми пикселей.

Этот код проверяет расстояние до клада, в случае победы сообщая

об этом игроку:

if (distance < 8) {

alert("Клад найден! Сделано кликов: " + clicks);

}

Код игры

Теперь, когда у нас есть все части кода, объединим их в программу.

// Получить случайное число от 0 до size-1

var getRandomNumber = function (size) {

return Math.floor(Math.random() * size);

};

// Вычислить расстояние от клика (event) до клада (target)

var getDistance = function (event, target) {

var diffX = event.offsetX - target.x;

var diffY = event.offsetY - target.y;

return Math.sqrt((diffX * diffX) + (diffY * diffY));

};

// Получить для расстояния строку подсказки

var getDistanceHint = function (distance) {

11. Пишем игру «Найди клад!» 173

if (distance < 10) {

return "Обожжешься!";

} else if (distance < 20) {

return "Очень горячо";

} else if (distance < 40) {

return "Горячо";

} else if (distance < 80) {

return "Тепло";

} else if (distance < 160) {

return "Холодно";

} else if (distance < 320) {

return "Очень холодно";

} else {

return "Замерзнешь!";

}

};

// Создаем переменные

 var width = 400;

var height = 400;

var clicks = 0;

// Случайная позиция клада

 var target = {

x: getRandomNumber(width),

y: getRandomNumber(height)

};

// Добавляем элементу img обработчик клика

 $("#map").click(function (event) {

clicks++;

// Получаем расстояние от места клика до клада

 var distance = getDistance(event, target);

// Преобразуем расстояние в подсказку

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «JavaScript для детей. Самоучитель по программированию»

Представляем Вашему вниманию похожие книги на «JavaScript для детей. Самоучитель по программированию» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Николай Игнатков - Убийство детей
Николай Игнатков
Отзывы о книге «JavaScript для детей. Самоучитель по программированию»

Обсуждение, отзывы о книге «JavaScript для детей. Самоучитель по программированию» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x