2016-02-22 3 views
-5

Я работаю над текстовым приключением, чтобы узнать Python. Я добрался до того места, где я пытаюсь создать механизм боя, и столкнулся с проблемой, когда ошибка говорит о том, что я не определил переменную, которая действительно определена. К нему прилагается код битвы двигатель, а затем я буду размещать ошибки я получаю:Определенная переменная не определена

import random 
import time 
import sys 

player_health = 100 
enemy_health = random.randint(50,120) 

def monster_damage(): 
    global player_health 
    global enemy_health 
    mon_dmg = random.randint(5, 25) 
    enemy_health -= mon_dmg 
    print('You hit the beast for ' + str(mon_dmg) + ' damage! Which brings its health to ' + str(enemy_health)) 
    if enemy_health < 0: 
     print('You have vanquished the beast and saved our Chimichongas') 
     win == True 
     time.sleep(10) 
    else: 
     player_dmg() 

def player_dmg(): 
    global player_health 
    global enemy_health 
    pla_dmg = random.randint(5, 15) 
    player_health -= pla_dmg 
    print(
     'The beast strikes out for ' + str(pla_dmg) + ' damage to you. This leaves you with ' + str(player_health)) 
    if player_health > 0 and enemy_health > 0: 
     player_turn() 
    elif player_health <= 0: 
     print('The beast has vanquished you!') 
     win == False 
     time.sleep(10) 
     sys.exit() 

def run_away(): 
    run_chance = random.randint(1, 10) 
    if run_chance > 5: 
     print('You escape the beast!') 
     time.sleep(10) 
     sys.exit() 
    else: 
     print('You try to run and fail!') 
     player_dmg() 

def player_turn(): 
    print('Your Turn:') 
    print('Your Health: ' + str(player_health) + ' Monsters Health: ' + str(enemy_health)) 
    print('What is your next action?') 
    print('Please Select 1 to attack or 2 to run.') 
    action = int(input()) 

    if action == 1: 
     monster_damage() 
    elif action == 2: 
     run_away() 

def battle_start(): 
    player_turn() 

battle_start() 

И ошибки:

Traceback (most recent call last): 
    File "C:/Users/rhood/Documents/python_files/game/rps_exp.py", line 15, in <module> 
    game() 
    File "C:\Users\rhood\Documents\python_files\game\main_game.py", line 25, in game 
battle() 
    File "C:\Users\rhood\Documents\python_files\game\battle.py", line 63, in battle 
    battle_start() 
    File "C:\Users\rhood\Documents\python_files\game\battle.py", line 61, in battle_start 
player_turn() 
    File "C:\Users\rhood\Documents\python_files\game\battle.py", line 56, in player_turn 
monster_damage() 
    File "C:\Users\rhood\Documents\python_files\game\battle.py", line 14, in monster_damage 
    enemy_health -= mon_dmg 
NameError: name 'enemy_health' is not defined 
+1

Вы не добавили 'global enemy_health' в функцию' player_turn' – Arman

+7

* «ошибка говорит о том, что я не определил переменную, которая действительно определена» * - один из вас ошибается, и я не ставлю против переводчика. – jonrsharpe

+1

После импорта случайный код, кажется, запускается. Где и как происходит ошибка? – timgeb

ответ

0

Все, что вам нужно сделать, это импортировать sys, random и time модули и определить переменную win.

+0

Я импортировал их, но я не копировал их при вводе кода, я просто видел, что мне жаль, это может быть IDE, в котором я работаю, это Pycharms. Я попробую позже сегодня вечером из другой системы и посмотрю, будет ли она работать –

Смежные вопросы