我需要创建一个简短的程序,允许用户使用掷骰子方法创建他们的统计数据。它必须创建 2 个不同的统计数据,一个力量属性和一个技能属性。对于要创建的这些,它有一个 12 面骰子和一个 4 面骰子。然后将 12 面骰子的值除以力量属性的 4 面骰子,然后对技能属性重复此操作。就是这样,我不知道该怎么做,非常感谢任何帮助。
问问题
1712 次
2 回答
2
我肯定会在这里看看 stdlib 中的随机模块
然后,您可以执行以下操作:
import random
random.randint(1,12)
# which produces random number between 1-12
那应该让你继续前进。
于 2013-02-17T03:19:10.807 回答
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 伤害符号创建您自己的 Weapon 类(例如 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)
于 2013-02-17T03:49:30.707 回答