-1

我正在尝试创建一个模拟战斗的功能。到目前为止,我有一个列表和一些随机挑选的内容,这些内容是我在另一篇文章中找到的。我似乎无法发表一个if打印出“命中!”的声明。或“闪避!” 或“致命一击!” 当它选择相应的单词时,因为无论出于何种原因它都会给出语法错误。谁能帮我?我该怎么做才能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()
4

2 回答 2

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

于 2013-07-09T08:34:38.727 回答
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
于 2013-07-09T08:34:32.867 回答