值仍然= 0?

时间:2016-04-16 21:16:23

标签: windows batch-file command

我正在开发一个用批处理程序编写的游戏,但由于某种原因,%wood%值在我添加2时保持为0。我试图解决它,但我不能和我来这里解决问题。 anyboyd知道如何解决这个问题吗?我犯了错误还是......

以下是源代码:

@echo off
title CommandCraft bg tst ns a. 1.01
color 2
echo W  W  W EEEE
timeout /t 1 /nobreak > nul
echo W  W  W E
timeout /t 1 /nobreak > nul
echo W  W  W EEEE
timeout /t 1 /nobreak > nul
echo W  W  W E
timeout /t 1 /nobreak > nul
echo WWWWWWW EEEE
timeout /t 1 /nobreak > nul
echo Presents
timeout /t 5 /nobreak > nul
cls
color 7
echo CommandCraft! (Version: bg tst ns a. 1.01)
echo.
echo Press any key to start
pause > nul
cls
:restart
set wood=0
set ore=0
set metal=0
echo You are in a forest.
:start
echo What do you do?
set /p action=Command?
if %action% == chop goto chop
if %action% == inventory goto items
:cmdelse
echo %action% is not a valid action.
goto start
:chop
echo You gained 2 peices of wood
set /a res = %wood% + 2
set %wood% = res
echo You now have %wood% peices of wood
goto start
:items
echo You have Wood x %wood%
echo You have Metal Ore x %ore%
echo You have Metal x %metal% 
goto start

1 个答案:

答案 0 :(得分:2)

set %wood%=res

应改为

set /a wood=%res%

。这是许多人所做的常见错误,因此请务必在发布问题之前检查重要行的语法,然后debugging the code。 ;)

另外,你可以做到

set /a wood+=2

因为它的工作原理与

一样多
set /a res=%wood%+2
set wood=%res%

并保存珍贵的行(由于您只需要分配一个变量,因此 在批处理脚本的可读性差中很宝贵)。它还节省了同样珍贵的记忆......

除此之外,好游戏!

编辑:感谢您在评论中指出。自从我上次使用Batch:P

以来已经有一段时间了