• Курсы

    …

    • Архив курсов
    Игры с BBC micro:bit

    Игры с BBC micro:bit

    Бесплатно
    Подробнее
  • Контакты
    Login
    ORT Education CourseORT Education Course
    • Курсы

      …

      • Архив курсов
      Игры с BBC micro:bit

      Игры с BBC micro:bit

      Бесплатно
      Подробнее
    • Контакты

      IT & Software

      • Главная
      • Все курсы
      • IT & Software
      • Игры с BBC micro:bit
      CoursesПрограммированиеИгры с BBC micro:bit
      • 1. Знакомство со спрайтом 0

        Знакомьтесь - спрайт, маленький объект, активный персонаж компьютерных игр. На этих уроках мы научимся создавать спрайты BBC micro:bit и управлять ими. Мы разработаем компьютерные игры, где спрайты будут двигаться, сталкиваться, бороться за своё существование.

        • Лекция1.1
          1. Эксперименты со спрайтом 45 min
        • Лекция1.2
          2. Первая игра – Поймай спрайт 01 hour 30 min
      • Игры со спрайтами. Уровень 1 0

        • Лекция2.1
          3. Ловец фруктов 01 hour 30 min
        • Лекция2.2
          4. Поймай крота 45 min
        • Лекция2.3
          4-1. Поймай крота. Продолжение 45 min
      • Игры со спрайтами. Уровень 2. Массивы 1

        В этом разделе мы познакомимся с новым понятием - массив. Массив поможет нам разрабатывать более сложные программы, а значит - игры, которые ещё интереснее и увлекательнее, чем те, которые мы научились делать.

        • Лекция3.1
          Знакомство с массивом
        • Лекция3.2
          Моделируем игру Flappy Bird

        4. Поймай крота

        Эта игра — вариант популярной в далёкие 70-е годы игры «Whack-a-mole» («Ударь крота») для аркадных игровых автоматов.

        Как выглядела игра, можно посмотреть здесь: https://youtu.be/_7nPhk-fYFg.

        Мы, конечно, не будем бить крота и вообще не будем его обижать, но возьмём идею за основу. А идея следующая.

        Сценарий:

        В случайный момент времени с левой или с правой стороны дисплея  (выбор стороны также случаен) на короткое время появляется «крот» — некоторый графический значок. Игрок должен нажать кнопку А, если крот появился слева, или кнопку B, если крот появился справа. При этом необходимо нажать кнопку в течение заданного интервала времени, например, в течение секунды или полсекунды. Если нажата неверная кнопка или нажата поздно, игра заканчивается. В случае успеха игра продолжается с новым кротом.

        Задача сложная, поэтому будем решать её поэтапно и начнём с более простого условия (упрощения в тексте выделены курсивом).

        В случайный момент времени в центре экрана на короткое время появляется «крот» — некоторый графический значок. Игрок должен нажать кнопку А или кнопку B. При этом необходимо нажать кнопку в течение заданного интервала времени, например, в течение секунды или полсекунды.
        Если нажата неверная кнопка или кнопка нажата поздно, игра заканчивается. В случае успеха игра продолжается с новым кротом.

        Более сложный вариант рассмотрим в следующий раз.
        Задача наша, даже в упрощённом варианте, непростая и требует специального подхода к решению, который называется  программирование “сверху вниз”. В этом подходе мы сначала разрабатываем общий план решения, а потом его детализируем. При этом в программировании применяются подпрограммы или функции.

        Пусть игра начинается по жесту «встряхивание». Пока игра не оставлена из-за промаха игрока, надо повторять:

        1. Включить обратный отсчёт времени: 3-2-1-0
        2. После паузы случайной длительности вывести на дисплей “крота”, запомнить время его появления
        3. Пока НЕ нажата кнопка А или кнопка B  – ничего не делать, просто ждать нажатия
        4. Когда кнопка нажата (закончилось ожидание), запомнить время нажатия
        5. Вычислить время реакции как разницу между временем нажатия и временем появления “крота”
        6. Если время реакции больше заданной величины (подберём экспериментом), остановить игру, иначе увеличить очки, удалить спрайт и начать всё заново.

        Для решения этих задач будем использовать функции:

        1. Обратный_отсчёт (задача 1). При выполнении этой функции на экране последовательно с интервалом 1 секунда появляются числа: 3, 2, 1, 0. Можно вместо 0 вывести восклицательный знак или какой-то другой символ, означающий начало игры.
        2. Крот_появись (задача 2) – в случайный момент времени после начала игры (окончания обратного отсчёта) на дисплее появляется спрайт “крот”, запоминается время его появления.
        3. Проверка_реакции – решает задачи 3-6

        Общий план решения такой:

        Также нам потребуются переменные:

        1. Крот – переменная для спрайта
        2. Игра_остановлена (будет принимать значения ИСТИНА или ЛОЖЬ. При значении ЛОЖЬ игра продолжается, при
          значении ИСТИНА – останавливается).
        3. Время_появления – момент появления крота.
        4. Время_нажатия – момент нажатия кнопки (А или B).
        5. Время_реакции – разность между временем нажатия кнопки и временем появления крота

        Теперь, когда общий план разработан, переходим к его детализации.

        1. Создайте указанные переменные и функции. Блоки функций пока остаются пустыми.
        2. Опишите план решения в виде программного кода:
        3. Напишите код для функций Обратный_отсчёт и Крот_появись.

        Обратный отсчёт: на экране дисплея с интервалом в 200 мс (или подберите время, которое вам покажется более подходящим) появляются числа 3, 2, 1, 0.
        Крот появись:

        1. После паузы случайной длины в центре экрана появляется точка – крот (переменная-спрайт).
        2. В переменной Время_появления запоминается момент его появления.

        Здесь надо использовать встроенную функцию время выполнения (мс). Обратите внимание не микросекунды, а миллисекунды. Эту функцию вы найдёте в блоке Ввод … больше. Она определяет время, которое прошло с момента начала работы программы. Работу функции можно представить как секундомер, который включается при запуске программы и выключается в момент её окончания, при этом в любой момент вы можете посмотреть на секундомер и узнать, сколько времени (в миллисекундах) прошло с начала его включения.

        Если подсказок ещё недостаточно и написать самостоятельно функции не получается, загляните в конец урока.

        Функция Проверка_реакции может быть такой:

        Обратите внимание на следующие моменты:

        1. В цикле “Пока” ничего не происходит. Это – ожидание. Ожидание нажатия одной из кнопок.
        2. Условие

          следует собирать в следующем порядке:

          и только после этого

        Теперь у вас есть всё необходимое, чтобы справится с задачей, но вы, наверное, заметили, что у нашего решения есть недостатки. Например, кнопка может быть нажата раньше момента появления “крота”. Такая ситуация называется “фальстарт”. В нашей программе фальстарт не определяется. Подумайте, как можно это исправить.

        Продолжение следует.

        Удачи!

        Возможные решения (могут быть, конечно, и другие):

        Функция Обратный_отсчёт

        Это самый простой вариант. У него есть недостаток – мы не можем управлять скоростью обратного отсчёта. Лучше ввести переменную, например, пауза, и в начальном блоке задать ей желаемое значение. В дальнейшем по ходу игры мы это значение сможем менять.

        Функция Крот_появись

        Предыдущий 3. Ловец фруктов
        Следующий 4-1. Поймай крота. Продолжение

        Оставьте ответ Отменить ответ

        Ваш e-mail не будет опубликован. Обязательные поля помечены *

        Последние курсы

        Игры с BBC micro:bit

        Игры с BBC micro:bit

        Бесплатно
        Cоздание электронных устройств

        Cоздание электронных устройств

        Бесплатно
        Основы электроники на базе Arduino в среде TinkerCad (для учителей)

        Основы электроники на базе Arduino в среде TinkerCad (для учителей)

        Бесплатно

        Designed and Developed by ORT Odessa

        Вход через логин и пароль

        Забыли пароль?