Jump to content
Fórum Script Brasil
  • 0
Sign in to follow this  
Higor Cruz Balthazar

Problema com método para retornar valores

Question

Ola , estou com problemas nesse código abaixo , ele é basicamente um jogo que eu estou criando para fins acadêmicos , a minha função 'ataque' esta com problemas nas linhas demarcadas por #**************************# pois ela não faz o que deveria fazer e devolve "NameError: name 'vida' is not defined" . Essa linhas seriam as responsáveis por executar uma função de outro arquivo e retornar o resultado(na forma de lista) dele, porem ele devera acessar o arquivo por meio da interação do usuário que enviara um valor de uma lista, essa lista é uma instancia da classe partida, que por sua vez foi criada pelo método especial __init__(self, ...).

PRECISO DE AJUDA E SUGESTÕES PARA RESOLVER ESSE PROBLEMA!!!

class partida(object):
  #...#
  #...#
    def ataque(self,j_atk,j_def):
        '''ira fazer o ataque e a defesa'''
        
        import sys
        sys.path.append("Teste_Armazenamento_de_Dados/ATAQUES")
        
        #ordem: nome,tipo,ataque_normal,ataque especial-1,ataque especial-2,defesa#
        Ataques_normal=['soco','facada','espada','mordida']
        Ataques_especial=['dark magic','arremeço','bola de fogo','rasengan','chidori','rasenshuriken','chidori nagashi','paralizado','cura','teletransporte']
        if j_atk[0]==self.jogador_X[0]:
            print('Voce pode usar o ataque simples '+self.jogador_X[2]+' ,')
            print('')
            print('usar o ataque especial 1 '+self.jogador_X[3])
            print('')
            print('ou usar o ataque especial 2 '+self.jogador_X[4])
            print('')
            while True:
                try:
                    tipo_atk=int(input('Qual ataque voce deseja usar:\n '+self.jogador_X[2]+'(1) ,'+self.jogador_X[3]+'(2) ,'+self.jogador_X[4]+'(3) \n>>> '))
                    if tipo_atk==1:
                        exec('import '+self.jogador_X[2]) #**************************#
                        exec("vida="+self.jogador_X[2]+"ATAQUE_NORMAL(j_atk,j_def,'X'")  #**************************#
                        self.jogador_X=vida[0]
                        self.jogador_Y=vida[1]
                        print(self.jogador_X[1][0],self.jogador_Y[1][0])
                        break
                    if tipo_atk==2:
                        exec("vida=ataques."+self.jogador_X[3]+"(j_atk,j_def,'X')")
                        self.jogador_X=vida[0]
                        self.jogador_Y=vida[1]
                        break
                    if tipo_atk==3:
                        exec("vida=ataques."+self.jogador_X[4]+"(j_atk,j_def,'X')")
                        jogador_X=vida[0]
                        self.jogador_Y=vida[1]
                        break
                except:
                    print('Digito invalido!!!')
            
        if j_atk[0]==self.jogador_Y[0]:
            print('Voce pode usar o ataque simples '+self.jogador_Y[2]+' ,')
            print('')
            print('usar o ataque especial 1 '+self.jogador_Y[3])
            print('')
            print('ou usar o ataque especial 2 '+self.jogador_Y[4])
            print('')
            while True:
                try:
                    tipo_atk=int(input('Qual ataque voce deseja usar:\n '+self.jogador_Y[2]+'(1) ,'+self.jogador_Y[3]+'(2) ,'+self.jogador_Y[4]+'(3) \n>>> '))
                    if tipo_atk==1:
                        exec('import '+self.jogador_X[2])
                        vida=ATAQUE_NORMAL(j_atk,j_def,'Y')
                        self.jogador_X=vida[0]
                        self.jogador_Y=vida[1]
                        print(self.jogador_X[1][0],self.jogador_Y[1][0])
                        break
                    if tipo_atk==2:
                        exec("vida=ataques."+self.jogador_Y[2]+"(j_atk,j_def,'Y')")
                        self.jogador_X=vida[0]
                        self.jogador_Y=vida[1]
                        break
                    if tipo_atk==3:
                        exec("vida=ataques."+self.jogador_Y[2]+"(j_atk,j_def,'Y')")
                        self.jogador_X=vida[0]
                        self.jogador_Y=vida[1]
                        break
                except:
                    print('Digito invalido!!!') 
                    
    #...#
    #...#

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

 

Hi, I'm having problems in this code below, it's basically a game that I'm creating for academic purposes, my 'attack' function is having problems on the lines marked by # ************************** # because it does not do what it should ,it returns "NameError: name 'life' is not defined". These lines would be responsible for executing a function from another file and returning the result (in list type) of it, but it should access the file through the user interaction that sent a value from a list, this list is an instance of class, which in turn was created by the special method __init __ (self, ...).

I NEED HELP AND SUGGESTIONS TO SOLVE THIS PROBLEM !!!

Edited by Higor Cruz Balthazar
ortografia

Share this post


Link to post
Share on other sites
  • 0

o que me parece é que falta um ponto aqui

#exec("vida="+self.jogador_X[2]+"ATAQUE_NORMAL(j_atk,j_def,'X'") 
exec("vida="+self.jogador_X[2]+".ATAQUE_NORMAL(j_atk,j_def,'X'") 

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Cloud Computing


  • Forum Statistics

    • Total Topics
      148143
    • Total Posts
      643463
×
×
  • Create New...