我需要创建一个简短的程序,允许用户使用骰子滚动方法创建他们的统计数据。 它必须创建2个不同的统计数据,一个Strength属性和一个Skill Atribute。为了创造它们,它有一个12面骰子滚动,并且一个4面骰子滚动。然后将12面骰子的值除以强度属性的4面骰子,然后针对技能属性重复该骰子。 这就是全部,我不知道该怎么做,任何帮助都会受到非常感谢。
答案 0 :(得分:2)
我肯定会看看stdlib here
中的随机模块然后你可以做以下事情:
import random
random.randint(1,12)
# which produces random number between 1-12
这应该让你去。
答案 1 :(得分:0)
简短的回答是(正如myusuf3指出的那样):
stat = random.randint (1, 12) / random (1, 4)
或
stat = random.randint (1, 12) // random (1, 4)
是否需要分数。
现在,如果您将在游戏后期使用更多骰子(用于攻击检定,技能组合等),并且具有不同数量的边(d4,d6,d8,d10)等,您可以创建自己的Die类(其中对你的例子肯定会有点过分,但我会草拟它只是为了给你一个想法):
class Die:
def __init__ (self, sides):
self.sides = sides
def roll (self, times = 1):
return sum (random.randint (1, self.sides) for _ in range (times) )
所以,在开始时你可以实例化你的骰子:
d4 = Die (4)
d6 = Die (6)
d10 = Die (10)
现在,如果您使用5d10进行伤害滚动,则只需输入:
即可damageRoll = d10.roll (5)
-
为了进一步理解这个想法,你可以用ADnD伤害符号创建你自己的武器类(例如2d4 + 1意思,滚动两个骰子四边,总结结果并加1):
import random
import re
class Weapon:
def __init__ (self, name, dmg):
self.name = name
self.dmg = dmg
self.dice, self.sides, mod, iMod = re.match ('(\\d*)d(\\d+)(?:([+-])(\\d+))?', dmg).groups ()
self.dice = int (self.dice) if self.dice else 1
self.sides = int (self.sides)
self.mod = 0 if not iMod else int (iMod) * (-1 if mod == '-' else 1)
@property
def damage (self):
return max (0, sum (random.randint (1, self.sides) for x in range (self.dice) ) + self.mod)
w = Weapon ('Bad ass katana', '4d10+8')
for i in range (10):
print (w.damage)