需要创建一个Python 2.7骰子滚轮来确定角色的统计数据

时间:2013-02-17 03:13:12

标签: python

我需要创建一个简短的程序,允许用户使用骰子滚动方法创建他们的统计数据。 它必须创建2个不同的统计数据,一个Strength属性和一个Skill Atribute。为了创造它们,它有一个12面骰子滚动,并且一个4面骰子滚动。然后将12面骰子的值除以强度属性的4面骰子,然后针对技能属性重复该骰子。 这就是全部,我不知道该怎么做,任何帮助都会受到非常感谢。

2 个答案:

答案 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)