2017-05-16 9 views
0

a, b 및 c는 훨씬 더 큰 코드의 일부인 미리 정의 된 함수입니다. enemy_reponse이 함수의 반환 값이기 때문에 코드는 항상목록에서 임의로 함수를 선택한 다음 조건에 결과를 적용하십시오.

a = enemy_hit 
b = enemy_def 
c = enemy_sphit 
d = [a,b,c] 
enemyresponse = random.choice(d)() 
#print(enemyresponse) 
if enemyresponse == b : 
    thing.health = thing.health - 0.25 
    #print(enemyresponse) 
elif enemyresponse != b : 
    #print(enemyresponse) 
    thing.health = thing.health - 1 

답변

1

enemy_reponseb와 동일하지 않습니다 *, 선택은 내가 각각 아무것도하지만, 일이 인쇄 시도 enemy_def 경우에도 ELIF 부분을 반환 함수 자체가 아닙니다. 당신은 무작위로 선택한 후 즉시 함수를 호출하는 방법을 참고 :

random.choice(d)() 
#    ^Called it 

저장 chosen_function (또는 비슷한)라는 변수에 선정되었다 기능을, 그 다음에 확인.

a = enemy_hit 
b = enemy_def 
c = enemy_sphit 
d = [a,b,c] 

# Randomly get function from list 
chosen_function = random.choice(d) 

# Call it to get the return value 
func_return = chosen_function() 
print(func_return) 

if chosen_function == b: 
    thing.health = thing.health - 0.25 

else: 
    thing.health = thing.health - 1 

* 않는 한 b 반환 자체가 아닌 것 같습니다 :

당신은 아마이 (테스트되지 않은) 같은 것을 의미했다.

+0

이 방법은 무작위로 호출하지 않고 선택할 수 있습니다. 즉, if \ else 문을 호출하면됩니다. 또는 변수에 함수를 할당하지 않으면이 작업을 수행 할 수 있습니다. –

+0

@HasanFares 예, 'choice'를 호출 한 후에'()'를 넣지 마십시오. 함수를 호출하게하는 것은 그 괄호입니다. – Carcigenicate

+0

나는 그것을 시도했지만 모두 반환됩니다 : 함수를 시작합니다. .enemy_sphit at 0x005E84F8> –