2013-05-22 44 views
0

我有一个相当简单的问题,我似乎无法包住我的头。目前我正在尝试通过批量编写游戏(我知道我应该使用其他更好的方法,但我不是)。我的问题是,它没有按时更新,但似乎是一切背后的转折点。在目前这一刻,只有等到惠普未被正确读取,直到发出另一个命令为止。批处理程序没有正确更新文本文件

这是

`:damageAdjuster 
cls 
for /f "delims=" %%a in (test.txt) do (
    set line=%%a 
    echo !line! 
    set /a L=!L!+1 
) 

echo Testing Damage 
echo. 
echo 1) Deal Damage to HP 
echo 2) Heal HP 

set /a healthPoints=!line! 
set /a hardHealth=17 
set /a hostileDamage=%random%%%6 +1 
set /a healthHeal=%healthPoints% +6 
set /a healthDamage=%healthPoints%-%hostileDamage% 

set input= 
set /p input=Well...?: 
if %input%==1 echo %healthDamage% >test.txt 
if %input%==2 echo %healthHeal% >test.txt 

if %healthPoints% gtr %hardHealth% (
echo %hardHealth% >test.txt 
) 

goto damageAdjuster` 

L被指定,并且延迟扩展被启用的代码。当然,我可能会以这种错误的方式来解决这个问题,但这正是我在零批处理中获得零经验的原因。任何帮助,将不胜感激。此外,如果沿着这个线路实际工作,它也可以用于记忆库存等?

+0

恭喜您试图将其作为批处理文件执行此操作。不过,我不明白你究竟在问什么。 – Gabe

+0

而不是使用for循环尝试一个do/while循环(我知道批处理'本地'支持do/while但有一种方法)[批处理如何...模仿while循环](http:// www .robvanderwoude.com/battech_while_loops.php) – wpenton

+0

'set/a L + = 1'? – Endoro

回答

0

您的代码与您描述的完全相同。我认为你限制健康的问题在于你在最后的回声中测试了错误的变量 - 你需要测试你正在写出的内容,而不是当前的健康值。考虑修改您的代码,如下所示:

if %input%==1 echo %healthDamage% >test.txt 
if %input%==2 (
    echo %healthHeal% >test.txt 

    if %healthHeal% gtr %hardHealth% (
    echo %hardHealth% >test.txt 
) 
) 
+0

它的工作原理!我不能够感谢你,先生。 – RandomScript