2013-02-17 10 views
-4

我需要創建一個簡短的程序,允許用戶使用骰子滾動方法創建其統計信息。 它必須創造2個不同的屬性,一個力量屬性和一個技能屬性。爲了創造它們,它將擲出12面骰子,並擲出4面骰子。然後將12面骰子的值除以4強度屬性的骰子,然後重複該技能屬性。 就是這樣,我不知道該怎麼辦,並且非常感謝任何幫助。需要創建一個Python 2.7 Dice Roller,它決定了一個字符的統計信息

+1

歡迎來到StackOverflow!你有什麼嘗試? (正如你所知,StackOverflow不會爲你寫一個項目)。 – 2013-02-17 03:15:47

+0

聽起來像功課。顯示一些代碼! – 2013-02-17 05:25:10

+0

'我不確定該怎麼去'。給你的建議只能是 - 學習一些關於Python和數學的書籍。關閉這個問題(因爲沒有人會在這裏回答你的問題),並創建一個新的問題,在那裏你給我們一部分**可能不工作**代碼,並描述你的問題。歡迎來到StackOverflow,祝你好運! – troyane 2013-03-09 11:02:09

回答

2

我肯定會看看隨機模塊中的STDLIB here

你可以,那麼你可以做的東西,如:

import random 

random.randint(1,12) 
# which produces random number between 1-12 

這應該讓你去。

+0

@Volatility是更新!鍵盤男子。 – myusuf3 2013-02-17 03:28:42

+0

是的,我有一些與此類似的東西,只是不確定是否要一起使用它,我可能應該把我剛纔的代碼放在那裏,並沒有那麼多,對此抱歉。謝謝。 :) – user2047609 2013-02-17 22:03:41

+0

@ user2047609考慮接受它作爲答案,如果它解決了您的問題。 – myusuf3 2013-02-17 22:35:12

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) 
+0

非常感謝你,我可能應該把我剛纔的代碼放在那裏,並沒有那麼多,對此抱歉。謝謝大家回答我的問題,非常有幫助。 – user2047609 2013-02-17 22:02:43

相關問題