배치 파일에서 체크 포인트 시스템을 만드는 방법이 있습니까? [복제]
Dec 20 2020
배치 파일에서 체크 포인트 시스템을 만드는 방법이 있습니까? 나는 배치를 가르치고 텍스트 기반 RPG 유형 게임을 만들고 있지만 프로그램이 닫히면 진행 상황이 저장되지 않고 코드 맨 처음부터 다시 시작됩니다. 복잡한 장기 게임을 만들고 싶지만 매번 게임을 다시 시작할 필요가 없습니다. 진행 상황을 저장하여 프로그램을 다시 열고 이전의 모든 선택 사항을 그대로 유지하면서 중단 한 부분에서 다시 시작하거나 다시 시작할 수있는 방법이 있습니까?
답변
1 Magoo Dec 20 2020 at 13:59
아마도 가장 쉬운 저장 / 다시로드 방법은 다음과 같습니다.
#
기록하려는 모든 변수의 첫 번째 문자로 사용할 문자 (예 :)를 예약하십시오 .
그래서...
set #points=35
set action=3
set #money=22
모든 #
변수 를 저장하려면
set #>filename
#money
그리고 저장 #points
하지만action
다시로드하려면
for /f "delims=" %%a in (filename) do set "%%a"
파일에 저장된 모든 변수를 다시로드합니다. 물론 # 변수 만 있습니다.
T3RR0R Dec 20 2020 at 16:25
매우 효율적인 저장 /로드 방법에 대한 magoo의 답변 외에도 (약간 수정) : 사용자 프로필 스크립팅은 다음과 같이 수행 할 수 있습니다.
@Echo off
rem /* predefine your key variables prior to this loop */
:name :# load point
Set /P "name=Enter your name: "
If Not "%name%" == "" (
rem /* If character exists; load */
If Exist "%~n0_%name%.bat" (
Call "%~n0_%name%.bat"
rem /* Initialise character save using predefined variables if character new */
) Else ( Call :Save )
rem /* Force Assignment of name variable */
) Else ( Goto name )
===============================================
::: Script body
::: End of Script
Goto :Eof
===============================================
:Save :# function
rem /* variation on magoo's method of saving */
(For /F "Delims=" %%G in ('Set #')Do Echo/Set "%%G")>"%~n0_%name%.bat"
Exit /B 0