Войдите, чтобы продолжить.
Игра «Сокобан» · Шаг 1 из 6
Уровень из текста
Уровни «Сокобана» с восьмидесятых годов пишут текстом: «#» — стена, «$» — ящик, «.» — место для ящика, «@» — кладовщик, пробел — пол. А ещё «*» — ящик, уже стоящий на месте, и «+» — кладовщик на месте для ящика.
Что сделать
Прочитайте уровень «Сокобана», записанный текстом, как его пишут с восьмидесятых.
Что приходит
stroki— уровень, список строк:#— стена,.— место,$— ящик,@— кладовщик,*— ящик на месте,+— кладовщик на месте
Что вернуть
Четвёрку: списки клеток (ряд, столбец) со стенами, с местами, с ящиками — по строкам — и клетку кладовщика, нет его — None.
Допишите функцию razobrat_uroven в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В игре
Игра зовёт razobrat_uroven в начале каждого уровня и рисует то, что вы вернули. Решите шаг — и уровни, где ящик уже стоит на месте, будут читаться правильно.
Без этого шага: читаются только «#», «@», «$» и «.» — ящик на месте («*») и кладовщик на месте («+») превращаются в пол.
razobrat_uroven(["#####", "#@$.#", "#####"])
([(0, 0), (0, 1), (0, 2), (0, 3), (0, 4), (1, 0), (1, 4), (2, 0), (2, 1), (2, 2), (2, 3), (2, 4)], [(1, 3)], [(1, 2)], (1, 1))
Функция принимает уровень — список строк. Возвращает кортеж из четырёх: списки клеток (ряд, столбец) со стенами, с местами для ящиков, с ящиками — каждый по строкам сверху вниз, в строке слева направо — и клетку кладовщика (None, если его нет). «*» — и ящик, и место; «+» — и кладовщик, и место. Любой другой знак — пол.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.