2013-02-28 1 views
0

새내기.랜덤 결과 숫자에 승수를 적용

확인을 너무 오래 짧은 이야기, 내가 만든 한 var에 그 출력 할 70과 155 사이의 임의의 숫자 :

T_dmg = random.randrange(70,155) 

그리고 이것은 내 "멀티 플라이어"입니다 :

def crit(cr): 
    return cr * 2 

치명타 하지만 중요한 "반환"진술을 사용하는 방법을 모르겠 스탠드.

if Toni > 0: 
     crit(T_dmg) 
     Xoni = Xoni - T_dmg 

문제는 어떻게 든 "치명타"기능이 적용하지 않는 것 때문에 출력이 곱되지 않습니다이다 : 숫자가 추가되기 전에 그래서 라인에이 기능을 추가했습니다. Xoni는 7000이라는 값을 가진 var입니다. 이것이 의미가 없으면 게임 개념에서 HP를 사용하고 있습니다. 여러분 중 누구라도 빛을 발할 수 있기를 바랍니다.

감사합니다.

편집 : 기회 코드 :

def critchance(): 
    random.randrange(1,10) 
    if critchance() == "3" 
    crit() 
+0

'cr'은 무엇을 의미합니까? – xxmbabanexx

+0

모르겠다. 방금 괄호를 채워야한다고 생각했다 ... – c0ldpr0xy

+0

아마도'T_dmg = crit (T_dmg)'일까요? –

답변

1

함수는 값을 반환 -이 입력 변수를 변경하지 않습니다. 함수의 출력에 여전히 T_dmg을 할당해야합니다.

T_dmg = crit(T_dmg) 

그렇지 않으면 T_dmg는 당신에게 "이상한"결과를 제공, 동일하게 유지됩니다.

critchance 기능도 해제되어 있습니다. 이는 무한 재귀입니다. 이 문제를 해결해야합니다. 또한 인수없이 crit 함수를 호출하는 것 같습니다. 이 함수에 매개 변수로 T_dmg을 전달해야합니다.

def critchance(cr): 
    if random.randrange(1, 10) == 3: 
     return crit(cr) 
    return cr 

그런 다음 호출하십시오.

T_dmg = critchance(T_dmg) 
+0

나는 본다 그러나 나는 너에게 이것을 위해 "기회"를 추가 할 것을 계획하고 있다는 것을 깜빡했다. 10 % 확률로 2 배로 증가합니다. 나는 "기회"함수를 이미 정의했으나 먼저 승수를 고치는 것처럼 보이지 않습니다. – c0ldpr0xy

+0

@ user2113324 원래 질문에서 설명해 주시겠습니까? 그리고 "기회"기능을위한 코드는 무엇입니까? – Volatility

+0

def critchance() : critchance() == "3"인 경우 random.randrange (1,10) crit() – c0ldpr0xy

관련 문제