保存并加载 .bat 游戏 - 单个数字错误

2023-12-11

在这个问题中,保存并加载 .bat 游戏我用了马特的答案。

但现在我在使用上述答案“保存”数字时遇到问题。

如果变量不是两位数(例如 1 或 0),它会将变量“保存”为“”,因此每当您执行任何需要该变量的操作时都会使游戏崩溃。游戏在此之前将变量设置得很好。

例如,如果我拿起抹布,然后输入 Inv,它会说我拿着抹布。如果我再次保存并加载,然后输入 Inv,它不会说我拿着任何东西!

它也不会回显“Nothing”,如果%raghave% = 00

(我还在 Notepad++ 中打开了保存文件,因此可以看到set RagHave=)

(另外,如果我使用带有空格的 Mat 代码,则变量将设置为"set RagHave=1" 所以在末尾添加了一个空格)


问题是 Mat 的解决方案! 为了更好地理解我重复他的解决方案

@echo @ECHO OFF           > savegame.cmd
@echo SET ITEMS=%ITEMS%   >> savegame.cmd
@echo SET HEALTH=%HEALTH% >> savegame.cmd
@echo SET MONEY=%MONEY%   >> savegame.cmd

在我看来,它有很多缺点。
The @前缀不是必需的。
每行都会重复重定向(我不喜欢冗余)。
它需要空格,因为如果没有空格,数字就会出现问题。

项目样本=1

@echo set ITEMS=1>>savegame.cmd

这结果不以书面形式set items=1它写道set items= to 1>>savegame.cmd1>> 是标准流。

您可以解决所有问题

(
    echo @ECHO OFF
    echo SET "ITEMS=%ITEMS%"
    echo SET "HEALTH=%HEALTH%"
    echo SET "MONEY=%MONEY%"
) > savegame.cmd

引号用于确保忽略集合后面的“隐藏”空格。

顺便提一句。使用像这样的结构是一个坏主意if %raghave% = 00,(需要两个等号),如00不是一个普通的数字,你无法用它来计数或计算,最好使用0反而。

那么这也应该有效

set /a items=0
set /a items=items+1
set /a items=items-1
if %items%==0 echo There are no items
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

保存并加载 .bat 游戏 - 单个数字错误 的相关文章

随机推荐