我很难绕过这个概念。我为模糊的主题道歉。我正处于创建文本基础RPG的迷雾中,并且我被困在战斗序列中。我有一些受影响的变量,但强度方面令人困惑。
这是强度发生的规则:
Strength increases or decreases by 5 depending if win or lose.
我希望有50/50的输赢机会,但总是至少有5%的机会输掉比赛才能让比赛变得公平。力量也是获胜概率的额外奖励。
我的问题:
How can I use strength to benefit the random number generated to win or lose?
它将会运行并且将是50/50,但是一旦力量达到25-30左右就会赢得100%的时间使其变得不公平。我需要结果为50/50,并且应用力量奖励
我知道可能超级简单,但我无法弄明白。如果我需要更好地解释,请告诉我。这对于一个学习项目来说是很多,我很感激所有的帮助。
下面的代码是计算的片段。我知道这可能是令人困惑或完全错误的,但即使是朝着正确方向轻微推动也会是巨大的。谢谢大家!
randomNum = 1 + rand() % (100 - 1 + 1);
randomNum = player->strength + randomNum;
if (randomNum >= 51){//changed to be based off rand() + strength
player->money += 50;
if (player->strength < 95){//made it to not go above 95
player->strength += 5;
}
printf("\n You won $50 and 5 strength points!\n\n ");
else{
if (randomNum <= 50){//changed if less than 50 you lose
{
player->strength -= 5;
}
printf("\n You lost a life and 5 strength points!\n\n ");
答案 0 :(得分:0)
在有明确掷骰子的角色扮演游戏中,你通常会有一个'攻击'分数(在你的情况下有力量)与'防御'分数(防守,抵抗,坚韧,无论如何)相对应。
通常会选择这样的值,以便攻击成功,如果攻击+死亡&gt; =防御(留下修改器等),添加的条件是非常低的滚动 - 在d20上为1,在d100上为<= 5 - 总是错过并且非常高的卷 - 在20日的20,&gt;在d100上95 - 总是命中。这大致相当于你的5%微调。
防御和攻击之间的区别是掷骰子的窗口。如果攻击正好比防守低一半,则攻击成功的几率为50%。增加攻击(通过增加力量)可以降低失败的可能性,直到只剩下自动失误,因为它们独立于攻击/防御分数。
在你的情况下,防守得分是50,但是力量可以远高于此,所以玩家永远不会失去,因为你没有自动失误。在平衡方面,平均攻击应该比平均防御低50,这意味着如果攻击低于标准或防御高于平均水平,命中率可以低于50%。将基础防御置于100,将基础攻击(力量)置于50,为任何方向留出空间。
答案 1 :(得分:0)
对于简单的事情你可以尝试:
int randomNum = 1 + (rand() % 100); //1-100
int testStrength = strength; // 1-100
if (testStrength > 95)
testStrength = 95;
else if (testStrength < 5)
testStrength = 5;
//chance to lose is 5-95% depending on strength
if (randomNum > testStrength)
{
//you lose!
}
else
{
//you win!
}
请注意,执行rand() % X
并不一定能为您提供完全随机的分布,但对于简单的游戏来说可能已经足够好了(请参阅here了解解决方案)。
我首先要在纸上创建游戏系统的所有规则。列出所有统计数据,它们影响的内容,战斗规则等......然后将其转换为代码。您可以查看现有的游戏规则(如D&amp; D或计算机RPG),了解某些规则系统的基本概念。有可能创建一个“好”的规则系统将是困难的部分......将其转换为代码应该很容易。
您可以做的另一件事是测试您的游戏规则代码,通过它运行100次或1000次并累积结果(在这种情况下赢/输)。绘制或制表数据以确保其有意义。