← Карта тем
Alterna · глава 52 · страница 52.4

Практикум

Не угадывай результат по цвету блоков: трассируй состояние, объясняй событие и исправляй алгоритм.

Каждая задача требует не только ответа, но и короткого объяснения. После разбора перенеси идею в 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

Проектные миссии

  1. Лабиринт. Добавь не менее трёх стен, старт и выход. Докажи, что путь существует, и запрети прохождение сквозь стены.
  2. Сборщик. Создай два типа предметов с разной ценностью. Покажи счёт и условие победы.
  3. Таймер. Добавь число оставшихся ходов. Каждый ввод уменьшает его; ноль переводит игру в проигрыш.
  4. Собственная механика. Реализуй телепорт, ключ и дверь, ускоритель или движущуюся опасность. Измени блоки и минимум одну функцию Python.
04

Самопроверка проекта