Игра «Арканоид» · Шаг 5 из 8
Удар по кирпичу
Кирпичи стоят плотно, и мяч, летящий наискосок, задевает их по-разному: сверху или снизу, сбоку, а иногда только углом. Удар сбивает с кирпича единицу прочности, кирпич без прочности исчезает. Мяч отскакивает от того, во что ударил.
Что сделать
Ударьте мяч о кирпичи вокруг: сбейте прочность, уберите разбитые и отразите мяч.
Что приходит
myach— где мяч:(строка, столбец)napravlenie— куда летит:(вниз, вбок)kirpichi— кирпичи: словарь{(строка, столбец): прочность}; менять его нельзя
Что вернуть
Тройку: новое направление, новый словарь кирпичей и список клеток, по которым пришёлся удар, — по правилам ниже.
Допишите функцию udar в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В игре
Игра зовёт udar на каждом такте, пока мяч бьётся о кирпичи, и по списку ударов начисляет очки. Решите шаг — и кирпичи начнут разбиваться, а мяч — от них отскакивать, а не пролетать насквозь.
Без этого шага: мяч пролетает кирпичи насквозь.
Мяч в (5, 6) летит вверх-вправо, (-1, 1). Прямо над ним, в (4, 6), кирпич прочности 1: удар сверху, мяч летит вниз-вправо, кирпич разбит. Ответ — ((1, 1), {(2, 2): 3}, [(4, 6)]): дальний кирпич (2, 2) не тронут.
udar((5, 6), (-1, 1), {(4, 6): 1, (2, 2): 3})
((1, 1), {(2, 2): 3}, [(4, 6)])
Мяч в (r, c) летит (вниз, вбок). Проверяются три соседние клетки:
- по вертикали
(r + вниз, c)— если там кирпич, это удар, и знаквнизменяется; - по горизонтали
(r, c + вбок), только есливбокне 0, — если там кирпич, это удар, и знаквбокменяется; - по диагонали
(r + вниз, c + вбок)— только есливбокне 0 и в пунктах 1–2 удара не было; если там кирпич, это удар, и меняются оба знака.
Обе первые проверки делаются по исходному направлению. Каждый удар уменьшает прочность своего кирпича на 1; кирпич с прочностью 0 убирается из словаря.
Вернуть кортеж из трёх: новое направление (вниз, вбок), новый словарь кирпичей (переданный не меняется; порядок оставшихся кирпичей прежний) и список клеток ударов в порядке пунктов: по вертикали, по горизонтали, по диагонали. Ударов нет — направление прежнее, словарь — копия, список пустой.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.