Игра «Арканоид» · Шаг 4 из 8
Отбить
Мяч долетел до нижнего ряда. Если там ракетка, мяч отскакивает вверх — а куда вбок, решает место удара: левой частью ракетки — влево, правой — вправо, ровно серединой — прямо вверх. Так игрок управляет мячом. Мимо ракетки — мяч потерян.
Что сделать
Решите, отбила ли ракетка мяч, и в какую сторону он полетит.
Что приходит
stolbec— в какой столбец нижнего ряда прилетает мячlevyy— столбец левого края ракеткиshirina_raketki— ширина ракетки, нечётная
Что вернуть
Направление (-1, вбок): вбок −1 левее середины ракетки, 1 — правее, 0 — ровно в середину; мимо ракетки — None.
Допишите функцию otbit в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В игре
Игра зовёт otbit, когда мяч долетает до ряда ракетки. None значит, что мяч упущен, — игра отнимает мяч. Решите шаг — и мячом можно будет целиться: левый край ракетки шлёт его влево, правый — вправо.
Без этого шага: ракетка отбивает мяч всегда вверх и вправо, куда бы он ни попал.
Ракетка шириной 3 стоит с пятого столбца: занимает столбцы 5, 6 и 7, середина — шестой. Мяч прилетает в шестой — прямо вверх, (-1, 0). В пятый — (-1, -1), в седьмой — (-1, 1), в восьмой — мимо, None.
otbit(6, 5, 3)
(-1, 0)
Ракетка занимает столбцы от levyy до levyy + shirina_raketki − 1. Место удара — сколько клеток от левого края ракетки до stolbec. Середина ракетки — место shirina_raketki // 2 (ширина нечётная, середина одна).
stolbecне на ракетке —None;- место левее середины —
(-1, -1); - правее —
(-1, 1); - ровно середина —
(-1, 0).
Ответ не зависит от того, как мяч летел: отскок задаёт ракетка.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.