繁体   English   中英

我正在尝试为 D&D 循环随机数生成器,但我的代码不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM