Войти Создать аккаунт

Игра «Арканоид» · Шаг 8 из 8

Где поймать

Под ракеткой рисуется тень — где мяч окажется, когда долетит до нижнего ряда. Кирпичи тень не учитывает, а стены и потолок учитывает: мяч может отскочить несколько раз. Поле в игре маленькое, но ту же функцию хотят взять в «бесконечный» режим, где до ряда ракетки миллионы строк, — и ответ нужен сразу.

Что сделать

Найдите столбец, в котором мяч долетит до ряда ракетки, — с отскоками от стен и потолка, но без перебора шагов.

Что приходит

  • myach — где мяч: (строка, столбец), выше ряда ракетки

  • napravlenie — куда летит: (вниз, вбок)

  • shirina — ширина поля, от 2

  • ryad — номер ряда ракетки

Что вернуть

Столбец, в котором мяч окажется, дойдя до строки ryad, если на пути нет кирпичей.

Допишите функцию gde_upadet в редакторе справа. Результат верните через return — то, что напечатано, на проверку не влияет.

В игре

Игра зовёт gde_upadet на каждом такте и рисует тень в ряду ракетки. Решите шаг — и тень покажет, куда мяч упадёт после всех отскоков, а не будет стоять прямо под ним.

Без этого шага: тень стоит прямо под мячом.

Пример

Мяч в (12, 3) летит вниз-вправо на поле шириной 13, ракетка в ряду 17. До ряда — пять шагов, до стены далеко: столбец 3 + 5 = 8. Если бы мяч был в (10, 6), то на седьмом шаге упёрся бы в правую стену и пришёл бы в столбец 11.

Тот же пример кодом
Вызов
gde_upadet((12, 3), (1, 1), 13, 17)
Вернуть
8

Готовая игра →

Ctrl+Enter — проверить

Обсуждение

Вопросов пока нет.

Войдите, чтобы спросить.