2014-06-21 4 views
-3

나는 싸우는 게임을 만들었지 만 그 피해는 무작위로 만들어지지 않습니다.파이썬 숫자가 랜덤 화되지 않습니다

from random import randint 
import time 
#playerHealth = 20 
#trollHealth = 10 
#dragonHealth = 15 
#playerDamage = randint(0,5) 
#trollDamage = randint(0,4) 
#dragonDamage = randint(0,7) 
#slay = True 
#######Variables. 

#print("""Random fight""") 




def fight(enemy): 

    playerH = 20 
    trollH = 10 
    dragonH = 15 
    playerD = randint(0,5) 
    trollD = randint(0,4) 
    dragonD = randint(0,7) 
    slay = True 

    if enemy == "troll": 
     enemyH = trollH 
     enemyD = trollD 
    elif enemy == "dragon": 
     enemyH = dragonH 
     enemyD = dragonD 
    else: 
     print("Invalid") 

    print"You are fighting a ", enemy 
    while slay: 
     print"Your health:",playerH 
     print"Enemy health:",enemyH 
     time.sleep(1) 

     #########When player is attacking########################### 
     if playerD == 5 or playerD == 4: 
      print"You deal",playerD,"damage points. A critical hit!" 
      time.sleep(1) 
      enemyH = enemyH - playerD 
      print"The",enemy,"has",enemyH,"health points remaining." 
      time.sleep(1) 
     elif playerD == 0: 
      print"You missed and deal 0 damage points." 
      time.sleep(1) 
      enemyH = enemyH - playerD 
      print"The enemy has",enemyH,"health points remaining." 
      time.sleep(1) 
     else: 
      print"You deal",playerD,"damage points." 
      time.sleep(1) 
      enemyH = enemyH - playerD 
      print"The enemy has ", enemyH, "health points remaining." 
      time.sleep(1) 
     ############################################################# 

     ########When troll is attacking############################## 
     if enemy == "troll": 
      if enemyD == 4: 
       print"The troll deals 4 damage points. A critical hit!" 
       time.sleep(1) 
       playerH = playerH - enemyD 
       print"You have",playerH,"health points remaining." 
       time.sleep(1) 
      elif enemyD == 0: 
       print"The troll missed and deals 0 damage points." 
       time.sleep(1) 
       playerH = playerH - enemyD 
       print"You have",playerH,"health points remaining." 
       time.sleep(1) 
      else: 
       print"The troll deals",enemyD,"damage points." 
       time.sleep(1) 
       playerH = playerH - enemyD 
       print"You have",playerH,"health points remaining." 
       time.sleep(1) 
     ############################################################## 

     ##########When dragon is attacking############################   
     if enemy == "dragon": 
      if enemyD == 6 or enemyD == 7: 
       print"The dragon deals",enemyD,"damage points. A critical hit!" 
       time.sleep(1) 
       playerH = playerH - enemyD 
       print"You have",playerH,"health points remaining." 
       time.sleep(1) 
      elif enemyD == 0: 
       print"The dragon missed deals 0 points of damage." 
       time.sleep(1) 
       playerH = playerH - enemyD 
       print"You have",playerH,"health points remaining." 
       time.sleep(1) 
      else: 
       print"The dragon deals",enemyD,"damage points." 
       time.sleep(1) 
       playerH = playerH - enemyD 
       print"You have",playerH,"health points remaining." 
       time.sleep(1) 
     ############################################################### 

     if enemyH == 0: 
      slay = False 
      print("You won the battle!") 
     elif playerH == 0: 
      slay = False 
      print("You lost the battle. Better luck next time.") 
##############################End of function################################## 


#########Begining of game############################ 
enemyTest = True 
print("Prepare yourself for battle.") 
time.sleep(1) 
while enemyTest: 
    enemy = raw_input("Would you like to fight a 'dragon' or a 'troll'? ") 
    enemy = enemy.lower() 
    if enemy == "troll" or enemy == "dragon": 
     enemyTest = False 
    else: 
     print("Invalid.") 
     time.sleep(1) 

if enemy == "troll": 
    fight(enemy) 
elif enemy == "dragon": 
    fight(enemy) 
else: 
    print("Restart the program.") 
    time.sleep(3) 








#To fix: 
#Enemy still attacks after death(test for death after each attack. Function? 
#Damage doesn't vary 
#Speed too fast at parts 

기능에서 나는 무작위로 손상을 유지하여 각 문자에 대해 랜덤 트를 설정하고 싶습니다. 그러나 예를 들어, 전투가 시작될 드래곤과 싸우고 싶다고하자. 플레이어가 먼저 4 점 데미지를 입히면 드래곤이 먼저 2 점 데미지를 입히면 전체 전투에서 4 점과 2 점의 데미지 만받습니다. 왜 그런가요? 어떻게 해결할 수 있습니까?

도움을 주시면 미리 감사드립니다.

+3

관련 코드 만 게시하십시오. 나는 그것이 약 1-3 라인이라고 추측한다. 그리고 당신은 당신의 현에서 어떤 간격을 놓치고있는 것처럼 보입니다. – keyser

답변

2

는 다음과 같은 기능에 randint 값을 할당 :

def fight(enemy): 
    playerH = 20 
    trollH = 10 
    dragonH = 15 
    playerD = randint(0,5) 
    trollD = randint(0,4) 
    dragonD = randint(0,7) 

import random 
rand_value= random.randint(0,10) 

for i in range(5): 
    print rand_value 
2 
2 
2 
2 
2 


for i in range(5): 
    print random.randint(0,5) 
2 
1 
3 
2 
5 

는 그런 다음 while slay loop 때문에 값이 결코 루프에서 변경되지 않습니다 입력합니다. 루프에 randint 값을 설정해야합니다.

playerD = randint(0,5) 

을 그리고 몇 줄 후에 당신은 당신의 루프 입력이 :

+0

아 맞아. – user3763040

0

이 라인 피해 금액을 선택 당신은 그 후 다시 손상을 설정하지

while slay: 

을, 그래서 결코 바뀌지 않습니다.

기본적으로 게임을 시작하기 전에 주사위를 굴려 테이블에 남겨두고 새 번호를 원할 때마다보고 있습니다. 게임을 진행하는 동안 루프를 다시 가져와 루프 내에서 새로운 임의의 숫자를 선택해야합니다.

나는 다소 this xkcd comic을 생각 나게합니다.

관련 문제