[英]I'm trying to change the motorspeed for my HingeJoint2D via script, it makes a Random value but doesn't apply it to the component
[英]I am trying to make a do while looping random number generator for D&D, but my code doesn't work
我想我可以尝试为六个独立的随机数生成器做一个 do while 循环,以得到六个 D&D 属性分数,总分正好是 78。 程序未按预期执行,几乎总是显示空白屏幕。 有时它确实有效,但它太少用了。 可以以不同的方式重新格式化以产生更一致的结果吗?
尝试重新排列代码,创建不同的 static 空隙,但似乎没有任何改善或帮助问题。
do
{
total = 78;
strength = rng.Next(8, 19);
strmod = (strength - 10) / 2;
total = total - strength;
dexterity = rng.Next(8, 19);
dexmod = (dexterity - 10) / 2;
total = total - dexterity;
constitution = rng.Next(8, 19);
conmod = (constitution - 10) / 2;
total = total - constitution;
intelligence = rng.Next(8, 19);
intmod = (intelligence - 10) / 2;
total = total - intelligence;
wisdom = rng.Next(8, 19);
wismod = (wisdom - 10) / 2;
total = total - wisdom;
charisma = rng.Next(8, 19);
chamod = (charisma - 10) / 2;
total = total - charisma;
}
while (total > 0 && total < 0);
if (total == 0)
{
Console.WriteLine("These are your attribute scores and modifiers:");
这应该通过每个 int 运行,进行计算,并得出一个完整的答案。 总答案的结果应该决定是用不同的随机数再次运行代码,还是继续运行 if 部分。
大多数时候,我只是得到一个空白屏幕。
我认为你想要做的是循环直到变量“total”收敛到零。 当您使用 && 时,这意味着两个条件必须同时有效,但在这种情况下,逻辑上不可能一个数字同时大于零和小于零。 如果您希望它适用于正数和负数但不为零(当 total==0 为真时,则循环退出)您应该像这样使用“或”|| 不是和&&。
这里有多个问题:
首先,这不是你生成分数的方式。 这给出了一个线性范围而不是钟形曲线,这样你会得到太多的极端分数。
其次,您的循环终止是错误的。 当您显然是指 || 时,您使用了 &&。 更好的是while(total,= 0)。 尽管。
第三,由于这个错误的终止,循环总是只运行一次——不管它们是否正确,你都会到达分数转储器——但是如果生成器循环没有,分数转储器会受到 (total == 0) 条件的保护在第一次尝试时得到它没有打印任何内容。
do
{
.
.
.
}
while (total != 0)
Console.WriteLine(total);
如果循环退出,则 total 必须为零,因此您不需要if
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.