2014-06-04 10 views
-1
while playerhealth and monsterhealth > 0: 
     x=raw_input('Attack or Run? >') 
     if x=='Attack' or 'attack': 
      print 'You attack the %r!' %monster 
      if playerstats[2]>=monsterstats[3]: 
       print 'You attack!' 
       currmonhealth-=(playerstats[0]-monsterstats[2]) 
       print 'The monster attacks!' 
       playerhealth-=(monsterstats[1]-playerstats[1]) 
       if monsterhealth<=0: 
        return 'The monster died!' 
       if playerhealth<=0: 
        return 'You died!' 
       print currmonhealth 
       print playerhealth 
      if monsterstats[2]<monsterstats[3]: 
       print 'The monster attacks!' 
       playerhealth-=(monsterstats[1]-playerstats[1]) 
       print 'You attack!' 
       print currmonhealth 
       print playerhealth 
       currmonhealth-=(playerstats[0]-monsterstats[2]) 
       if monsterhealth<=0: 
        return 'The monster died!' 
       if playerhealth<=0: 
        return 'You died!' 
     elif x=='Run' or 'run': 
      c=random.randint(0,1) 
      if c==0: 
       return 'You made it!' 
      if c==1: 
       print 'You didn\'t make it!' 
       print 'The monster attacks!' 
       playerhealth-=(monsterstats[1]-playerstats[1]) 
       if playerhealth<=0: 
        return 'You died!' 
     else: 
      print 'You can\'t do that!' 

* Извините, обо всем этом. Когда я пытаюсь запустить это, он печатает здоровье монстра и здоровье игрока, но позволяет ему опускаться ниже нуля, не заканчивая цикл. Может ли кто-нибудь объяснить, в чем проблема, почему цикл не заканчивается? *Пока цикл не заканчивается

+0

Я думаю, что вы хотите изменить в то время как playerhealth и monsterhealth> 0 в то время как playerhealth> 0 и monsterhealth> 0 –

+1

Вы декремента и печати currmonhealth, но ваша петля условие проверяет переменную monsterhealth, которая, кажется, не изменяется в вашем блоке цикла – Unda

ответ

2

Вы должны использовать

playerhealth > 0 and monsterhealth > 0: 

вас код не работает, потому что если playerhealth < 0 и monsterhealth > 0 ваше состояние оценивается в True.

0

Ваша проблема с этой линии:

while playerhealth and monsterhealth > 0: 

Что она делает проверяет, если переменная playerhealth имеет ненулевое значение, и если monsterhealth больше 0. Это truth value проверка.

Вам не нужна проверка значения на playerhealth. Это будет проверять, если оба значения выше 0.

while playerhealth > 0 and monsterhealth > 0: 
Смежные вопросы