Игра «Арканоид» · Шаг 3 из 8
Стены
Мяч отскакивает от боковых стен и от потолка. Стена меняет только ту часть полёта, что в неё смотрит: от боковой стены мяч летит обратно вбок, но так же вверх или вниз; от потолка — вниз, но так же вбок. В угол — обе сразу. Пол — не стена: туда мяч падает.
Что сделать
Отразите мяч от стен и потолка, если следующим шагом он вылетел бы за поле.
Что приходит
myach— где мяч:(строка, столбец)napravlenie— куда летит:(вниз, вбок)shirina— ширина поля в столбцах
Что вернуть
Новое направление (вниз, вбок): вбок меняет знак, если следующий столбец вне поля; вниз — если следующая строка выше нулевой.
Допишите функцию steny в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В игре
Игра зовёт steny на каждом такте перед шагом мяча. Решите шаг — и мяч будет отскакивать от стены под тем же углом, а не возвращаться назад по той же линии.
Без этого шага: от стены мяч летит назад по той же линии, будто ударился в угол.
steny((5, 0), (-1, -1), 13)
(-1, 1)
Столбцы поля — от 0 до shirina − 1, строки — от 0 вниз. Следующая клетка мяча — (строка + вниз, столбец + вбок).
- Если её столбец вне поля — меньше 0 или не меньше
shirina, — у направления меняется знаквбок. - Если её строка меньше 0 — меняется знак
вниз. - Обе проверки независимы: в углу меняются обе части.
- Нижнего края нет: мяч, летящий вниз, здесь не отражается.
Мяч, летящий от стены или прямо вверх-вниз у стены, не отражается: смотрят только на следующую клетку. Функция возвращает новое направление кортежем.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.