我有一款带有战斗系统的文本冒险游戏。它当然是回合制的,玩家和敌人都会造成伤害点(浮动)。我使用random.uniform()
函数生成每一轮的攻击点。0代表错过一个敌人或玩家。然而,由于我使用浮动,这种机会是相当渺茫的。我想创造一个条件,假设有1/5的几率攻击点等于0.00。此条件必须在每轮中运行。
我该怎么做呢?有我可以使用的模块吗?
注:我想我可以使用随机模块(random.randint(0,5)
),但我想知道是否有其他方法。谢谢!
我认为你应该使用random.uniform()
为0.00攻击点保留20%的值。
hit = random.uniform(0, 10)
if hit <= 2:
damage = 0.00
else:
damage = (hit - 2) / 8
这只是一个愚蠢的例子,但可能会有所帮助。或者更简单:
hit = random.uniform(0, 10)
if hit >= 8:
damage = 0.00
else:
damage = hit / 8
我建议滚动两个随机数字:一个是命中的机会,另一个是实际造成的伤害。你也可以将它们与玩家属性结合起来。例子:
if random.uniform(0, 100) < player.chance_to_hit:
damage = random.uniform(weapon.min_damage, weapon.max_damage)
你可以用最大命中伤害(int)乘以从0到1的概率:
try:
chance = 1.0 / random.randint(0, 5)
except ZeroDivisionError:
chance = 0.0
damage = chance * MAXIMUM_DAMAGE
只是猜测。
机会1在5 , 攻击点 = 0.00 。
if random.randint(1, 5)==1:
attack_points=0.00
|
或者如果你想看到大的真实数字:
if random.randint(0, 100)<=20:
attack_points=0.00