Alterna · учебный материал
Практикум
Практикум: трассировка блоков, события, циклы, условия, состояния и проектные миссии.
Что в этом материале
- Трассировка и понимание
- 1. Координата после цикла
- 2. Ось Canvas
- 3. Событие
- 4. Условие
- 5. Переменная
- 6. Два сценария
- Найди ошибку
- Проектные миссии
- Самопроверка проекта
Содержание и основные понятия
Каждая задача требует не только ответа, но и короткого объяснения. После разбора перенеси идею в Block Studio и проверь её на настоящем игровом коде.
трассировка
отладка
проект
01
Трассировка и понимание
1. Координата после цикла
x = 10
, затем 4 раза выполняется «изменить x на 7». Чему равен x?
Ответ и разбор
38.
Четыре изменения дают 28:
10 + 4 × 7
.
2. Ось Canvas
Спрайт имеет y=120. Что произойдёт после
y -= 30
?
Ответ и разбор
Спрайт поднимется до y=90, потому что ось y растёт вниз.
3. Событие
Сценарий начинается блоком «когда нажата клавиша пробел». Выполнится ли он после нажатия флага?
Ответ и разбор
Нет. У каждого сценария собственное событие запуска.
4. Условие
Касание стены истинно. Какая ветвь выполняется в «если не касается стены — двигаться, иначе — сказать Стоп»?
Ответ и разбор
Ветка «иначе»: отрицание делает первое условие ложным.
5. Переменная
Почему счёт нужно хранить в переменной, а не только рисовать текст «Счёт: 5»?
Ответ и разбор
Текст — представление. Переменная нужна для следующего вычисления, проверки победы и восстановления кадра.
6. Два сценария
Два обработчика одновременно прибавляют к x по 5. Какой риск?
Ответ и разбор
Скорость удвоится или результат будет зависеть от порядка обработки. Нужен один владелец координаты либо явное объединение действий.
02
Найди ошибку
Спрайт проходит стену
x = x + speed
if touches_wall(x, y):
x = x
Старое x уже потеряно. Сначала вычисли
next_x
, проверь его и только затем измени состояние.
Победа каждый кадр
if score = 3:
say("Победа")
Для сравнения нужен
==
. Кроме того, состояние победы лучше сохранить, чтобы не запускать эффект каждый кадр.
Цикл не заканчивается
while x < 100:
say(x)
x не меняется, поэтому условие всегда истинно. Добавь изменение x или ограничение числа шагов.
Рестарт неполный
if key == "space":
x = 70
Нужно восстановить всё состояние: y, счёт, список предметов, таймер и режим.
03
Проектные миссии
Лабиринт.
Добавь не менее трёх стен, старт и выход. Докажи, что путь существует, и запрети прохождение сквозь стены.
Сборщик.
Создай два типа предметов с разной ценностью. Покажи счёт и условие победы.
Таймер.
Добавь число оставшихся ходов. Каждый ввод уменьшает его; ноль переводит игру в проигрыш.
Собственная механика.
Реализуй телепорт, ключ и дверь, ускоритель или движущуюся опасность. Измени блоки и минимум одну функцию Python.
04
Самопроверка проекта
Я могу объяснить порядок выполнения блоков.
Состояние игры хранится в данных, а не только на Canvas.
У проекта есть цель, победа или проигрыш и рестарт.
Я изменил сгенерированный Python и понимаю изменение.
Проверены края, стены, повторный запуск и быстрые нажатия.