실행 취소가 가능한 소코반 게임 만들기는 언어 기초를 익힌 학습자를 위한 C++ 실습 프로젝트입니다. 플레이어가 상자를 목표 지점으로 밀고, 불가능한 이동을 거부하며, 이전 동작 전체를 되돌릴 수 있는 터미널 게임을 만듭니다.
이 과정은 가이드 실습 2개와 독립 챌린지 1개로 구성됩니다. 먼저 걷기, 상자 하나 밀기, 실제 목표 달성 판정을 구현합니다. 그런 다음 완전한 상태 값을 저장하고 실행 취소로 복원합니다. 마지막에는 같은 규칙을 다른 두 상자 창고에 적용합니다. 각 실습은 자체 파일을 제공하며 이전 환경의 파일이나 실행 중인 게임을 이어받지 않습니다.
학습 내용
과정을 마치면 다음을 수행할 수 있습니다.
- 고정된 벽과 목표 지점을 변하는 플레이어 및 상자 위치와 분리합니다.
- 상태를 바꾸기 전에 걷기와 밀기 조건을 확인해 거부한 동작이 아무것도 바꾸지 않게 합니다.
- 모든 상자가 목표 지점에 있는지에 따라 완료를 판단하고 이동이나 실행 취소 후 다시 계산합니다.
- 합법적인 이동에 대해서만 전체 상태를
vector기록에 값으로 복사하고 플레이어와 모든 상자를 안전하게 복원합니다. - 원래 레벨을 보존하면서 서로 다른 합법적인 경로로 플레이할 수 있는 재사용 가능한 C++ 엔진을 컴파일하고 실행합니다.
추천 대상
이 과정은 객체, 값 복사, 표준 컨테이너로 규칙이 명확한 대화형 프로그램을 만들고 싶은 C++ 학습자에게 적합합니다.
선수 지식: 기본 터미널 탐색과 C++ 클래스, 함수, 문자열, vector에 익숙해야 합니다. 가이드 실습에서 고정 지형 모델, 이동 조건, 전체 상태 스냅샷, 기록 연산을 설명합니다.
학습 환경: LabEx는 C++17 컴파일러, 소스 코드 틀, 작은 레벨, 작동하는 예제, Terminal이 준비된 브라우저 기반 Linux 환경을 제공합니다. 게임 조작 명령, 메시지, 명령 출력은 영어로 표시됩니다.
자주 묻는 질문
게임 애플리케이션 전체를 작성하나요?
engine.cpp에서 이동, 완료 판정, 실행 취소 함수를 구현합니다. 레벨 로딩, 텍스트 렌더링, 명령 읽기는 준비되어 있습니다. 직접 만든 엔진을 플레이 가능한 프로그램으로 컴파일하며 로컬 설치나 그래픽 엔진은 필요하지 않습니다.
최단 풀이를 찾아야 하나요?
아니요. 서로 다른 합법적인 경로를 사용할 수 있습니다. 이 프로젝트는 올바른 상태 변경과 완전한 실행 취소에 집중하며 자동 풀이 또는 최적 이동 횟수를 요구하지 않습니다.
승리로 이어진 밀기도 취소할 수 있나요?
네. 완료 후에도 플레이를 계속할 수 있으며, 실행 취소는 승리 직전 상태를 포함해 플레이어와 모든 상자를 복원합니다. 기록은 현재 메모리 안의 게임에 속합니다. 프로그램을 다시 시작하면 저장된 세션을 불러오는 대신 새 게임이 시작됩니다.

