首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缺少批处理操作符,并且不知道原因

缺少批处理操作符,并且不知道原因
EN

Stack Overflow用户
提问于 2016-12-01 10:43:01
回答 1查看 43关注 0票数 1

我一直在编写一个基于文本的精灵宝可梦之战,它一直告诉我我有一个丢失的操作符。下面是ive缩小范围的脚本。

代码语言:javascript
复制
set /a attacks=%random% * 3 / 32768 + 1
if %attacks%==1 set /a %ph%==%ph% - %random% * 10 / 32768 + 1
if %attacks%==2 set /a %ph%==%ph% - %random% * 30 / 32768 + 1
if %attacks%==3 set /a %ph%==%ph% - %random% * 50 / 32768 + 1
if %attacks%==3 echo Squirtle used water bolt!
if %attacks%==2 echo Squirtle used Tackle!
if %attacks%==1 echo Squirtle used Water Pulse!

如有任何帮助,我们不胜感激!谢谢!

EN

回答 1

Stack Overflow用户

发布于 2016-12-01 15:51:10

正如SomethingDark所说,您将希望使用set /a ph=。请注意,这里有一个等号,它表示“获得值”,而不是两个等号,它与if一起使用,表示“等于?”(作为比较)。另外,通过设置%ph%=...可以设置一个与变量ph的值同名的新变量。换句话说,如果ph设置为1,则将名为1的变量设置为数学运算的结果。或者,如果ph为空,您可能丢失了操作数(我想这就是您想说的)。不管怎样,我肯定这不是你想要的。

此格式将起作用:

代码语言:javascript
复制
if %attacks%==1 set /a ph=%ph% - %random% * 10 / 32768 + 1

我还有几个建议。

首先,这可能是一个风格上的选择,但我喜欢使用随机的mod (%)运算符。这使得它更容易阅读。如下所示:

代码语言:javascript
复制
set /a ph=%ph% - %random% %% 10 + 1

这个( %% 10部分)在0到9之间选择一个数字,然后+ 1使用模算法(即除以这个数字,然后返回余数)将它变成1到10。它只是更容易阅读IMO。请注意,您只需要在批处理文件中使用双%%。在cmd中,只需使用%

其次,当使用与if的比较时,如果您的一个操作数为空,它将终止您的脚本。相反,应该用引号将操作数括起来,这样即使是一个空变量也不会破坏您的脚本。如果您的变量从不为空,则不是严格要求,但可能值得这样做。

代码语言:javascript
复制
if "%attacks%"=="3" echo Squirtle used water bolt!

我希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40901766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档