9 октября 2016 г

Отправлено 9 окт. 2016 г., 13:04 пользователем Dimitrijs Fedotovs   [ обновлено 10 окт. 2016 г., 08:53 ]

Пройденный материал

  • Вспомнили как создавать уровень игры из стен, блоков, огня и шарика
  • Начали разбираться о том, что такое событие, какие события бывают и как на них реагировать.
    • onInit - событие, срабатывающие в самом начале, перед тем, как отобразить первый кадр игры.
    • onLoop - событие, срабатывающее на каждый кадр игры
    • onCollision - событие, срабатывающее если спрай сталкивается с другим спрайтом.

Примеры, которые использовали на занятии

Шарик, который улетает за экран:

       // зарегистрировать символ 'o' для создания шарика (BallSprite)
register('o', BallSprite::new)                   
           // при инициализации "включить" огненный хвост
    .onInit(b -> b.setFlame(true))
           // при инициализации указать скорость движения 10 клеток в секунду
    .onInit(b -> b.setSpeed(10))                 
           // на каждый кадр сдвигать шарик в указанном направлении с указанной скоростью
    .onLoop(ai::followDirection);

Мяч, который отскакивает от других спрайтов

    // зарегистрировать символ 'o' для создания шарика (BallSprite)
register('o', BallSprite::new)                   
           // при инициализации указать скорость движения 10 клеток в секунду
    .onInit(b -> b.setSpeed(10))                 
           // на каждый кадр сдвигать шарик в указанном направлении с указанной скоростью
    .onLoop(ai::followDirection)                 
           // на каждый кадр поворачивать шарик "лицом" по направлению движения
    .onLoop(ai::turnToDirection)                 
           // при столкновении с другим (любым) спрайтом - совершить отскок
    .onCollision(ai::bounce);

Мяч отскакивает от других спрайтов и исчезает, если врезается в спрайт огня

Код аналогичный предыдущему примеру, только с дополнительной строчкой в конце, указывающей, что надо шарику исчезнуть, если врезался в огонь:

           // при столкновении со спрайтом огня - удалить шарик из игры
    .onCollision(ai::halt, TrapSprite.class);

Мяч, следующий за курсором мышки

    // зарегистрировать символ 'o' для создания шарика (BallSprite)
register('o', BallSprite::new)                   
        // при инициализации указать скорость движения 10 клеток в секунду
    .onInit(b -> b.setSpeed(10))                 
        // на каждый кадр сдвигать шарик по координатам X и Y
        // в направлении курсора мышки, с указанной скоростью

    .onLoop(ai::followMouseXY)                   
        // на каждый кадр поворачивать шарик "лицом" по направлению к курсору мышки
    .onLoop(ai::turnToMouse)                     
        // при столкновении с другим (любым) спрайтом - остановиться
    .onCollision(ai::stopXY);

Домашнее задание

Для родителей

Для детей

  • Повторить все что делали на занятии, но по мере возможности самостоятельно
  • Можно "подсмотреть" чем занималась другая группа 2 октября 2016 г. Там чуть-чуть больше информации.
Comments