Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 从0到变量的批处理文件随机化_Variables_Batch File_Random - Fatal编程技术网

Variables 从0到变量的批处理文件随机化

Variables 从0到变量的批处理文件随机化,variables,batch-file,random,Variables,Batch File,Random,很长一段时间以来,我一直想编写一个游戏,我一直认为这太难了,所以我开始在流行的网站Scratch()上编程,并使用html和css制作网站 我开始想用代码制作一个游戏,所以我正在学习批处理文件。不幸的是,我才刚刚开始,对游戏的一部分感到困惑。我正在制作一个游戏,尝试重新创建游戏《剑与凉鞋2》,以提高我对批处理文件的了解。比赛的重要部分是你对对手造成的伤害。很明显,你需要一个百分比的机会让你的攻击发挥作用,以便在游戏中输入运气。我可以很容易地做到这一点,但我希望这样,如果你有一个更高的级别变量,你

很长一段时间以来,我一直想编写一个游戏,我一直认为这太难了,所以我开始在流行的网站Scratch()上编程,并使用html和css制作网站

我开始想用代码制作一个游戏,所以我正在学习批处理文件。不幸的是,我才刚刚开始,对游戏的一部分感到困惑。我正在制作一个游戏,尝试重新创建游戏《剑与凉鞋2》,以提高我对批处理文件的了解。比赛的重要部分是你对对手造成的伤害。很明显,你需要一个百分比的机会让你的攻击发挥作用,以便在游戏中输入运气。我可以很容易地做到这一点,但我希望这样,如果你有一个更高的级别变量,你将有更高的百分比机会,但如果你的对手有一些防守,它将减少机会

我做了一些基础数学,得出了一些我满意的方程式,下面是代码部分:

if %move% equ 2 set /a tauntchance=%RANDOM%*(100+(%oppdefence%*5))/32768+1
if %move% equ 2 set /a tauntchance1=(7+(%charisma%*3))
if %move% equ 2 if tauntchance leq %tauntchance1% set /a damage= ((%charisma%*2)-%RANDOM%*1/32768+1)
if %move% equ 2 set /a energy=%energy%-%charisma%
移动=所选选项

嘲讽机会=0-(100+(对手防御*5))的随机数

嘲讽1=(7+(你的魅力等级*3))

第三行=如果嘲讽机会小于或等于嘲讽机会1,则将你的伤害设置为魅力等级*2,有50%的几率移除1或0,保持不变

第四行=外部变量,包括您的能量量

当我运行此代码时,窗口崩溃。如果你知道这是否可能,请让我知道

我以前做过很多研究,但在这个特定的主题上没有任何结果

编辑

有了你的答案,它仍然会关闭窗口,所以我想我会从问题开始更新代码

if %move% equ 2 set /a tauntchance=%RANDOM%*(100+(%oppdefence%*5)+1)/32768+1
if %move% equ 2 set /a tauntchance1=(7+(%charisma%*3))
if %move% equ 2 if %tauntchance% leq %tauntchance1% set /a damage=((%charisma%*2)-%RANDOM%*2/32768+1)
if %move% equ 2 set /a energy=%energy%-%charisma%
echo You have %energy%/%maxenergy% energy left.
echo.
echo You dealt %damage% damage.
echo.
pause >nul
谢谢你的回复

已解决


我以前在代码中发现了一些变量中的问题,并已将其修复,感谢您的帮助。

set/a taintchance=%RANDOM%*(100+(%oppdeffence%*5))/32768+1

%tauntchance%
变量的值永远不会等于0。为了得到理想的结果,你应该使用这条线


set/a taintchance=%RANDOM%*(100+(%oppdeffence%*5)+1)/32768

第三条线路也有问题。这部分代码
%random%*1/32768+1
将只生成1的序列,因此
%damage%
变量的值将始终保持不变。要修复此问题,请改用
%random%*2/32768

这是完整的密码吗?因为在使用
if
命令时,您必须首先初始化变量,或者最好将它们放在引号中。下面的代码运行良好,只是如果没有正确的变量值,它就没有意义

@echo off
if "%move%" equ "2" set /a tauntchance=%RANDOM%*(100 + (%oppdefence%*5) + 1)/32768
if "%move%" equ "2" set /a tauntchance1=(7 + (%charisma%*3))
if "%move%" equ "2" if "%tauntchance%" leq "%tauntchance1%" set /a damage=((%charisma%*2) - %RANDOM% %% 2)
if "%move%" equ "2" set /a energy=%energy% - %charisma%
echo You have %energy%/%maxenergy% energy left.
echo.
echo You dealt %damage% damage.
echo.
pause > nul

您不需要在
集合/a
commad中使用所有te
%%
,因此仅提及变量名而不使用
%%
也会扩展它们的值;您的第三行中有一个错误,它应该是
if%tauntchance%leq%tauntchance1%[…]
(您忘记了
%%
周围的
tauntchance
);“窗口崩溃”到底是什么意思?在我说窗口崩溃之后,我做了一些小的改进,现在它说缺少操作数,在我在第三行添加%%After and before tauntchance后,它只是关闭窗口,即使我输入了暂停>nul来停止它。1。第三行
设置/a损坏=
中的
=
后有一个空格-尝试将其删除;2.您的代码片段是括号内代码块的一部分吗?如果您想了解批处理文件,那么这就足够了,尽管现代Windows脚本更可能使用PowerShell。然而,如果你真的想编写一个游戏,那么最好使用一种完整的编程语言,比如Python或者一种为游戏而设计的BASIC版本。尝试将批处理文件用于任何非琐碎的操作都会很快变得令人沮丧。但此问题仍然存在,因此我将在问题的结尾处发布代码。若要仅获取“0”或“1”,模运算符效果良好:
set/a tauntchance=%RANDOM%%%2
(在命令行上:
set/a tauntchance=%RANDOM%%2
)(空格可以省略,但它们更易于阅读)