Детская игра. Акула ловит падающую сверху живность и пытается поддержать свой растущий организм. Каждая словленая зверушка — плюс одно очко, каждая упущенная — минус одна жизнь.
Первый этап разработки игры "Морской коктейль". 1. Давайте сделаем игру в которой акула ловит краба/рыбу/осьминога и ест. Для начала удалим котика и вставим акулу. 2. Давайте выберем правильный фон для нашей акулы. Выбраем подводные фоны и убираем стандартный. 3. Давайте выставим акулу в начальную позицию. Выставляем начальную позицию и добавляем по нажатию флажка команду "выставить в x y". Обращаем нивание детей что в этом случае текущие координаты выставляются автоматически. Проверяем. 4. Давайте научим акулу плавать вправа и влево. Добавляем события. Обсуждаем какая координата при этом будет меняться. Говорим о том, как она будет меняться при движении в разные стороны. Добавляяем отталкивание на краю экрана просто для смеха. Создаём скрипты и проверяем поведение. 5. Перемещаем событие "по нажанию на флажок" в скрипт фона, который рассылает сообщение о начале игры. Меняем стартовое событие в скрипте акулы. 6. Добавляем раба/рыбу/осьминога в список спрайтов. Заставляем в начале игры менять размер (для моего персонажа - 70%). 7. Выставляем позицию (где-то вверху экрана) и по начальному событию игры заставляем перейти в эту позицию. Проверяем. 8. А теперь интересное — добыча начнёт валиться сверху! Добавляем цикл "повторять пока не" и задаём значение по предложению детей. В условии ставим "=" (что ошибка, но пока об этом не говорим). Обсуждаем какую координату нужно менять и как, чтобы добыча именно валилась вниз. По результатам обсуждения добавляем в цикл "изменить y на -10". Проверяем. 9. Кажется, крабик/звезда/рыбка слишком быстро валиться вниз. Как будем решать проблему? (сразу предложили вставить задержку. Предлаем подумать про другое решение). По предложению курсанта уменьшаем шаг по y до -5. Проверяем. Кажется, пока подойдёт. 10. Давайте будем считать очки. Мы же для этого и играем! Добавляем переменную "очки". В основном скрипте акулы добавялем цикл "всегда" в котором создаём условие "если касается добычи - увеличить значение переменной «очки» и передать сообщение «съел»" (специально пишу с ошибкой и мне делают замечение). Запускаем и проверяем. 11. Добавляем переменную "жизни", чтобы можно было уменьшать жизни если мы упустили еду. 12. Чтобы было красиво, когда акула поймала добычу — делаем чтобы еда пропала. На всякий случай, при это проверяем чтобы еда касалась акулы. Ну и, конечно, чтобы в начальной точке падения добыча появлялась. 12. Но добыча падает только один раз за запуск и чтобы набрать ещё очков нужно каждый раз перезапускать игру. Добавляем цикл "всегда" в код для добычи. Чтобы было интересней и нельзя было понять когда появиться добыча - ставим случайную задержку перед появлением от 1 до 3 секунд. После цикла на перемещение вниз добавляем "спрятаться" и "изменить жизни". По резульатам обсуждения уменьшаем жизни на 1 (-1). Раз нам нужно уменьшать жизни и очки, нужны и стартовые значения. Обсуждаем и ставим 0 для очков и 3 для жизней (я планировал 5). 13. Проверяем и понимаем что добыча заваливаться за край экрана, если его не поймать. И на этом всё — ни изменения числа жизней, ни запуска следующей порции. Нужно исправлять. Проблема в условии (см пункт 8): нам нужно не равно (=), а больше. Выправляем и начинает работать. В конце занятия дети находят баг: если словить добычу, то сначала увеличиваются очки, а затем (иногда задержка заметна) уменьшается количество жизней. Оставляем на следующий раз. Продолжение: