Создание игры Sokoban с отменой ходов — практический проект на C++ для тех, кто уже знает основы языка. Вы создадите терминальную игру, в которой игрок толкает ящики на целевые клетки, отклоняет невозможные ходы и может полностью отменить предыдущее действие.
Курс состоит из двух пошаговых лабораторных работ и одного самостоятельного задания. Сначала вы реализуете ходьбу, перемещение одного ящика и проверку фактического выполнения цели. Затем сохраните полные значения состояния и восстановите их при отмене. В завершение примените те же правила к другому складу с двумя ящиками. Каждая работа предоставляет собственные файлы; файлы и запущенная игра из предыдущей среды не переносятся.
Чему вы научитесь
После завершения курса вы сможете:
- отделять неподвижные стены и цели от изменяющихся позиций игрока и ящиков;
- проверять условия ходьбы и толкания до изменения состояния, чтобы отклонённые действия ничего не меняли;
- определять завершение по нахождению каждого ящика на цели и пересчитывать его после хода или отмены;
- копировать полные состояния в историю
vectorтолько для допустимых ходов, затем безопасно восстанавливать игрока и все ящики; - компилировать и запускать переиспользуемый движок на C++, который поддерживает разные допустимые маршруты и сохраняет исходные уровни.
Для кого этот курс
Курс предназначен для изучающих C++, которые хотят использовать объекты, копирование значений и стандартные контейнеры в интерактивной программе с чёткими правилами.
Предварительные требования: Базовая навигация в терминале и знакомство с классами, функциями, строками и vector в C++. Пошаговые работы объясняют модель неподвижного поля, условия ходов, полные снимки состояния и операции с историей.
Учебная среда: LabEx предоставляет подготовленную среду Linux в браузере с компилятором C++17, каркасом кода, небольшими уровнями, работающим примером и Terminal. Команды управления игрой, сообщения и вывод команд остаются на английском языке.
Часто задаваемые вопросы
Нужно ли писать всё игровое приложение?
Вы реализуете функции перемещения, проверки завершения и отмены в engine.cpp. Загрузка уровней, текстовое отображение и чтение команд уже подготовлены. Вы скомпилируете свой движок в рабочую игру; локальная установка и графический движок не нужны.
Нужно ли находить кратчайшее решение?
Нет. Принимаются разные допустимые маршруты. Проект посвящён правильным изменениям состояния и полной отмене, а не автоматическому решению или оптимальному числу ходов.
Можно ли отменить победный толчок?
Да. После завершения уровня можно продолжать играть, а отмена восстанавливает игрока и все ящики, включая состояние перед победным толчком. История относится к текущей игре в памяти; повторный запуск начинает новую игру, а не загружает сохранённый сеанс.

