0

Choose Your Own Adventure ゲームをバッチで作成していますが、ゲームでのあなたの行動を追跡するために、その中に統計を入れたいと思っています。統計を表示したいのですが、コマンドがあるたびに表示する必要がclsあり、そのコマンドを頻繁に使用する:Statsため、必要なときにいつでも呼び出すことができるように、というブロックを作成しました。正常に動作しますが、Stats 表示後のナラティブが機能していないようです。ブロックを維持したい:colorEchoので、プレイヤーは会話、物語、選択肢を入力するコマンドを区別できます。これを修正する方法についてのアイデアはありますか?

:Start
::Game goes here.
cls
Echo Please enter your player name.
set /p PlayerName="Player name: "
cls
call :Stats
call :colorEcho 7 "You lay on the cold, hard ground, sleeping away. It's   been 1 month since the Virus spread..."
Echo.
call :colorEcho 7 "The sun rises over the horizon, warming up your dirt-caked body."
Echo . 
pause
exit

:Stats
call :colorEcho A "Current Health = "
call :colorEcho C " %Health%"
Echo.
call :colorEcho A "Hunger = "
call :colorEcho C " %Food%"
Echo.
call :colorEcho A "Thirst = "
call :colorEcho C " %Water%"
Echo.
call :colorEcho A "Infection = "
call :colorEcho C " %Infection%"
Echo. 
call :colorEcho A "Stamina = "
call :colorEcho C " %Stamina%"
Echo.
Echo.
pause

:colorEcho
echo off
<nul set /p ".=%DEL%" > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1i

補足: すべての変数を定義しました。確信したこと。

起こるはずのこと:

期待される

実際に何が起こるか:

実際

4

1 に答える 1

-2

他のブロックにコールバックするのを忘れました

@echo off
SETLOCAL EnableDelayedExpansion
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do     rem"') do (
  set "DEL=%%a"
)
title Ace
set Health=100
set Food=100
set Water=100
set Infection=100
set Stamina=100
color A
Echo Welcome, %USERNAME% to Ace, a crudely made Choose-Your-Own-Adventure game. You must complete 

this in one try. 
call :colorEcho A "There is" 
call :colorEcho C " no saving" 
Echo . Are you ready?
Echo Your options are:
call :colorEcho C "================="
Echo.
Echo 1. Yes
Echo 2. No
call :colorEcho C "================="
Echo.
Echo Please enter the number corresponding to your answer.
set /p Answer1="Enter your choice: "
if "%Answer1%" == "1" goto Start
if "%Answer1%" == "2" goto Quit

:Quit
Echo You have chosen to quit.
pause
exit

:Start
::Game goes here.
cls
Echo Please enter your player name.
set /p PlayerName="Player name: "
cls
call :Stats

Echo.
call :colorEcho C "You lay on the cold, hard ground, sleeping away. It's been 1 month since the Virus 

spread"
Echo.
call :colorEcho C "The sun rises over the horizon, warming up your dirt-caked body."
Echo. 
pause
exit

:Stats
call :colorEcho A "Current Health = "
call :colorEcho C " %Health%"
Echo.
call :colorEcho A "Hunger = "
call :colorEcho C " %Food%"
Echo.
call :colorEcho A "Thirst = "
call :colorEcho C " %Water%"
Echo.
call :colorEcho A "Infection = "
call :colorEcho C " %Infection%"
Echo. 
call :colorEcho A "Stamina = "
call :colorEcho C " %Stamina%"
EXIT /B
Echo.
Echo.

:colorEcho
echo off
<nul set /p ".=%DEL%" > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1i
于 2016-03-28T00:45:30.643 に答える