值还是=0?

Value still = 0?

我正在开发一个使用批处理编程的游戏,但出于某种原因,每当我向它添加 2 时,%wood% 值都保持为 0。我试图修复它,但我不能,我来这里是为了解决问题。有人知道如何解决这个问题吗?是我弄错了还是...

这里是源代码:

@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
set %wood%=res

应该改为

set /a wood=%res%

。这是很多人常犯的错误,所以在发帖之前一定要检查重要行的语法,然后是 debugging the code! ;)

另外,你可以这样做

set /a wood+=2

因为它和

一样有效
set /a res=%wood%+2
set wood=%res%

并节省宝贵的行(行 批处理脚本可读性差的宝贵之处),因为您只需要分配一个变量。它还可以节省同样宝贵的内存...

除此之外,不错的游戏!

编辑:感谢您在评论中指出。距离上次使用 Batch 已经有一段时间了 :P