【发布时间】:2019-11-21 06:56:11
【问题描述】:
我正在创建一个龙与地下城角色创建器。有一个随机化功能将创建一个完整的字符表。我已经完成了一部分,但我不太确定最好的方法。
我设置种族修饰符的方式是使用 if 语句。这是一个例子。
if (raceInt == 0 || raceInt == 2 || raceInt == 10)
{
raceStrMod = 2;
}
if (raceInt == 3 || raceInt == 4 || raceInt == 5 || raceInt == 11 || raceInt == 12)
{
raceDexMod = 2;
}
但是,有些种族具有修饰符,可让您选择两个属性来添加修饰符,例如力量或敏捷。为这些比赛选择两个随机整数的最佳方法是什么?
例如,半精灵种族将获得 +2 敏捷,然后 +1 其他两个随机属性。所以我需要找到一种方法来随机选择剩余的两个整数来使 value = 1。
我的种族模组初始化为
int raceStrMod = 0;
int raceDexMod = 0;
int raceConMod = 0;
int raceIntMod = 0;
int raceWisMod = 0;
int raceChaMod = 0;
然后 if 语句根据随机选择的种族分配一个值。
感谢大家的投入!这就是我最终编码的方式
if (raceInt == 9)
{
int randomX = rnd.Next(1, 5);
int randomY = rnd.Next(1, 5);
int attempts = 0;
while (randomX == randomY && attempts < 10)
{
randomY = rnd.Next(1, 5);
attempts++;
}
//if they are still not unique after 10 attempts
if (randomX == randomY)
{
if (randomX == 5)
randomY = 1;
else
randomY = randomX + 1;
}
int[] randomNumbers = { randomX, randomY };
foreach (int i in randomNumbers)
{
switch (i)
{
case 1:
raceStrMod = 1;
break;
case 2:
raceDexMod = 1;
break;
case 3:
raceConMod = 1;
break;
case 4:
raceIntMod = 1;
break;
case 5:
raceWisMod = 1;
break;
}
}
}
【问题讨论】:
-
你问的是如何生成随机数?
-
最好将它们视为具有“可选属性奖励 +2”。或者,将它们视为几个物种 - 每个属性组合一个 |像这样的案例正是为什么制作角色创建者几乎不可能做到,即使对于有经验的程序员也是如此。所以你最好不要把这些边缘案例放在外面。
标签: c#