在DND游戏中,常用“掷骰表示法”(Dice Notation)来表示随机数,如:
- “1d6”:表示掷一次6面骰子
- “2d8”:表示掷两次8面骰子
- “1d6+10”:表示掷一次6面骰子,并在结果上加常数10
- “2d6+1d20”:表示掷两次6面骰子和一次20面骰子
下列源代码内含2个函数,一个是掷骰子,另一个是拆解表达式并组合骰子结果:
from random import randint
def dice(CMD='1d6'):
result = 0
if CMD.find('d')==-1:
result = int(CMD)
else:
list_cmd = CMD.split('d')
for _ in range(int(list_cmd[0])):
result += randint(1,int(list_cmd[1]))
return result
def dice_expression(CMD='1d6'):
result = 0
list_cmd = CMD.split('+')
for i in list_cmd:
a = dice(i)
print(a)
result += a
return result
if __name__ == '__main__':
CMD = '1d6+1d20+10'
print('掷骰结果:',dice_expression(CMD))
测试后可将中间结果显示去除,使代码更简洁。
祝各位玩得开心,踢门顺利。