Пройденный материал
Ход занятияСоздание нового проектаИнструкция как создать новый проект Добавление спрайтов в level.txt
Должно получится чтото похожее на такой уровень: ################################## Регистрация спрайтовОткрываем MyGame.java. Видим, что символ решетки "#" уже зарегистрирован для стенок. Аналогично регистрируем блоки, ловушки, шарик и каретку: @Override Промежуточный результат 1Теперь, если запустить игру, у нас должен получиться такой вот уровень:
Разные блокиНеобходимо дополнить регистрацию блоков обработкой события onInit и там установить материал блоков:
Возможны следующие варианты:
Самостоятельно придумываем и изменяем код, чтобы блок под символом "=" был бы одного вида, а под символом "+" другого. Движение кареткиВ первую очередь нужно задать скорость на событие onInit: .onInit(c -> c.setSpeed(15)); Затем, на каждый кадр нужно сдвигать каретку по горизонтали по направлению к курсору мышки: .onLoop(ai::followMouseX);Если оставить так, то каретка будет проезжать сквозь стены. Надо добавить обработку события столкновения: .onCollision(ai::stopX);Собираем все вместе. Должен получиться такой код для каретки: register('-', CaretSprite::new)Запускаем игру - каретка двигается за мышкой. В первую очередь надо задать скорость шарика: .onInit(b -> b.setSpeed(10));Для каждого кадра шарик должен сдвигаться в заданном направлении (по умолчанию вверх) .onLoop(ai::followDirection);Теперь шарик просто улетит вверх сквозь блоки и стены. Нам нужно добавить отскок при сталкновении: .onCollision(ai::bounce);Собрав все вместе получается следующий код для шарика: register('o', BallSprite::new) Промежуточный результат 2Запускаем игру, проверяем, исправляем ошибки.На этот раз шарик должен летать, отскакивать от стен, блоков и от каретки. Но так же он отскакивает и от лавы! Еще есть другая проблема - блоки не исчезают от удара шарика. Исчезновение шарика при попадании в лавуЧтобы шарик исчезал от попадания в лаву, нужно добавить еще одну обработку события onCollision на шарике, но только для конкретного класса спрайтов - ловушки: .onCollision(ai::halt, TrapSprite.class); Теперь шарик исчезнект (ai::halt) как только коснеться лавы (TrapSprite). Все вместе код выглядит так: register('o', BallSprite::new) Исчезновение блоков от удара шарикаАналогично исчезновению шарика, нужно добавить обработку onCollision для блоков: .onCollision(ai::halt, BallSprite.class); или если совместить с кодом блока: register('=', BlockSprite::new) Внимание! У нас так же есть блок, обозначенный символом "+". Самостоятельно добавьте обработку onCollision и для него, иначе эти блоки будет невозможно выбить. Дополнительные примерыВид ловушки (огонь, лава, вода)
Так же можно использовать другие материалы ловушки:
Цвет шарика
Возможны следующие цвета:
Материал блока
Возможны следующие варианты:
Цвет стены
Возможны следующие цвета:
Домашнее задание
Код целиком@Override |
Младшая группа >