用随机数打击模拟器

时间:2013-07-09 08:30:41

标签: python

我正在尝试创建一个模拟战斗的功能。到目前为止,我有一个列表,其中一个随机选择其中一个我在另一篇文章中找到的。当我选择相应的单词时,我似乎无法创建一个if语句打印出“Hit!”或“Dodge!”或“Critical Hit!”,因为它因任何原因而出现语法错误。谁能帮我?我该怎么办才能发表if声明?

Health = 10
dodge = 1
dmg = 1
hit = dmg + 1
crhit = hit * 2

def fight():
    while 1 == 1:
        global Health
        global dodge
        global hit
        global dmg
        chances = [hit, hit, dodge, crhit, hit]
        from random import choice
fight()

2 个答案:

答案 0 :(得分:2)

您只有导入功能选项,您仍然需要调用

from random import choice # This makes it so we can use the function in the script.
Health = 10
dodge = 1
dmg = 1
hit = dmg + 1
crhit = hit * 2
def fight():
    while 1:
        mychoice = choice(chances) # We call the function. It gets a random value from the list
        if mychoice == hit: # Create an if/elif for each possible outcome
            dostuff()
        elif ...
fight()

然后你可以使用if/elif结构来处理每个选项

此外,不需要那些global语句,因为您实际上并没有自己修改变量(除非您打算稍后再这样做)。

while 1 == 1可以简单地写成while 1,因为它也可以被视为True

答案 1 :(得分:0)

我不会放弃整个答案,因为你应该这样做,但是random.choice(testList)从列表中返回一个随机元素,你可以使用它们从hit获得一个, dodgecrhit。您可以编写三个if-elif语句来检查每个语句。简短的例子(你应该从这里得到答案),

>>> varOne = 2
>>> varTwo = 3
>>> varThree = 4
>>> from random import choice
>>> testVar = choice([varOne, varTwo, varThree])
>>> if testVar == varOne:
       print 'abc'
    elif testVar == varTwo:
       print 'def'
    else:
       print 'ghi'


abc