通话功能不起作用?

时间:2016-03-27 23:59:39

标签: function batch-file call cls

我正在制作一个批量选择你自己的冒险游戏,我希望在其中有统计数据来跟踪你在游戏中的表现。我想显示统计数据,但每次有cls命令时我都必须这样做,并且因为我经常会有这个命令,所以我创建了一个名为: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

旁注:我已经定义了所有变量。我确定了。

应该发生什么:

expected

实际发生的事情:

actual

1 个答案:

答案 0 :(得分:-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
相关问题