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

Игра «Сокобан» · Шаг 2 из 6

Шаг и толчок

Кладовщик ходит на соседнюю клетку. Стена его не пускает. Если впереди ящик, кладовщик его толкает — но только если за ящиком свободно: ни стены, ни другого ящика. Тянуть ящик нельзя, толкать два разом — тоже.

Что сделать

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

Что приходит

  • igrok — клетка кладовщика

  • yashchiki — клетки ящиков; менять переданные нельзя

  • steny — клетки стен

  • kuda — направление: "vverh", "vniz", "vlevo" или "vpravo"

Что вернуть

Пару (новая клетка кладовщика, ящики по рядам и столбцам); в стену или ящик, за которым стена или ящик, — никто не двигается.

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

В игре

Игра зовёт hod_igroka на каждую стрелку и на каждый шаг пути по щелчку. Решите шаг — и кладовщик начнёт толкать ящики.

Без этого шага: ящики не двигаются — в них упираешься, как в стену.

Пример

Кладовщик в (1, 1), ящик в (1, 2), ход вправо: за ящиком свободно — ящик уезжает в (1, 3), кладовщик встаёт на (1, 2). Будь в (1, 3) стена — оба остались бы на месте.

Тот же пример кодом
Вызов
hod_igroka((1, 1), [(3, 3)], [(0, 1)], "vpravo")
Вернуть
((1, 2), [(3, 3)])

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

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

Обсуждение

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

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