@vincentby

Простая игрушка на JS — как поправить?

Всем привет! Есть такая предельно примитивная игрушка по мотивам всем известного блокбастера - output.jsbin.com/kebeziyafe . Суть - дойти до принцессы в правом нижнем углу. Столкнулся с парой моментов, которые не получается самому сделать. Буду благодарен за подсказку:
1) начать игру можно как кликом по кнопке мыши, так и нажатием enter. Если начинаем через нажатие enter происходит двойная вставка "врагов" ( ф-ция startGame() ). Возможно, как-то неправильно обрабатываю условия события.
2) пока в игре Марио как может проходить через врагов. Хочу это поправить. Начал делать ф-цию checkMove(), идея пока что - если Марио налетел на врага, выдавать алерт. Вобщем, что конкретно будет происходить - неважно, а важно, что я это налетание не могу отловить(

Буду благодарен за помощь)

P.S. координаты в коде берутся через корявый substring, т.к. parseFloat в начале игры при нулевых top и left у марио выдаёт NaN и невозможно ходить.
  • Вопрос задан
  • 299 просмотров
Пригласить эксперта
Ответы на вопрос 3
amux
@amux
whata.ninja
Сделали бы игровое поле матрицей:
пример матрицы (другого примера под рукой нет, но смысл понятен)

Положение на поле = matrix[x][y]
Если есть враг (значение в ячейке), значит напоролся на врага

потом уже, по матрице отрисовывать игровое поле
Ответ написан
lxsmkv
@lxsmkv
Test automation engineer
делайте console.log() под все события на все интересующие вас переменные, и ищите где математика не сходится.
Не хочу лишать вас бесценного опыта дебаггинга.
Начните с одним врагом. Или хотя бы с принцессой, поставьте ее посредине, и найдите при каких значениях иксов и игреков два квадрата соприкасаются. Испробуйте все позиции, сверху снизу справа слева :)

P.S: Обычно начинают с решения математической составляющей начинают. Обкатывают на примитивны графических экземплярах всю логику, а потом добавляют графику и пр. Но соглашусь что так мотивации больше, когда видишь перед собой что-то красивое, а не черно белые геометрические примитивы.

P.P.S: A почему не на html5 canvas все это. Так надо? Ведь поо нему дофига информации и на все распространенные вопросы есть готовые решения.
Ответ написан
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
Доработал ваш код, интересны идеи по развитию игры.
https://js-master.ru/content/10.Igry/Super_Mario
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы