Урок 16. Финал: игра «Поймай кружок»
Финал. Собираем всё вместе — холст, события, случайность, условия и счёт.
Новой теории почти нет — только одна вещь, без которой игру не сделать: как понять, куда именно кликнули по холсту.
Координаты клика
Событие клика знает координаты относительно всего окна, а нам нужны — относительно холста. Разницу даёт getBoundingClientRect:
holst.addEventListener('click', function (e) {
const ramka = holst.getBoundingClientRect();
const mx = e.clientX - ramka.left;
const my = e.clientY - ramka.top;
});
Попали или нет
Клик засчитан, если расстояние от него до центра кружка меньше радиуса. Расстояние между двумя точками считают по теореме Пифагора:
const rasstoyanie = Math.sqrt((mx - x) * (mx - x) + (my - y) * (my - y));
if (rasstoyanie < r) { /* попал */ }
Как устроена игра
- функция
narisuiстирает холст и рисует кружок в точке (x, y); - функция
pereprygniставит кружку новые случайные координаты и вызываетnarisui; - по клику проверяем попадание: если да — увеличиваем счёт и вызываем
pereprygni; - в самом конце один раз вызываем
narisui, чтобы кружок появился на старте.
Math.random() * (holst.width - 2 * r) + r.Твой прогресс
Опыт и значки хранятся прямо в этом браузере — ни имени, ни почты для этого не нужно. Все треки и значки →
Частые вопросы
Как узнать, куда кликнули на canvas?
Из события берут clientX и clientY, а из холста — getBoundingClientRect(). Вычитая left и top рамки из координат клика, получают позицию внутри самого холста.
Что учить после JavaScript?
Хорошее продолжение — Python: он проще синтаксисом и на нём удобно решать задачи и писать игры. В нашем разделе есть отдельный бесплатный трек по Python.