Architecture to complete

Asked

Viewed 34 times

-2

I’m creating an RPG to play on the Javascript console. I created a conditional within a function that, if chosen, the whole program for ,but is not happening.

Can someone give me an idea of a solution?

Code:

 var mago = {
  nome: "Misha",
  vida:50,
  ataque:7,
  esquiva:6,
  defesa: 4,
  esp : "Magia",
  especial : function(){
    
     return this.ataque*3;
    }
}

var ladra = {
  nome: "Aysha",
  vida : 60,
  ataque: 10,
  esquiva: 8,
  defesa: 6,
  esp : "facada",
  especial: function(){
    
    
    return this.ataque*2;
  }
}
  
  var guerreiro = {
    nome:"Thron",
    vida: 70,
    ataque: 15,
    esquiva: 7,
    defesa: 7,
    esp : "espadada",
    especial: function(){
      
      return this.ataque*1.5;
    }
  }
  
  var vilao = {
    nome : "Eskeleton",
    vida :30,
    ataque :22,
    esquiva :4,
    defesa :3
    }
  
  var dado = {
    nome : "dado",
    sorteio : function(){
      result = ""
      prompt("A sorte está lançada!\nClique 'Ok' para jogar o dado.");
      
       num = Math.floor(Math.random() * 20+1);
    
    if(num >= 1 && num <= 5){
      
       result = "crítico";
       
       }else if(num > 5 && num <= 15){
         
       result = "acertou";
       
       }else{
         
        result = "perfeito"; 

       }
      
       prompt("O d20 deu "+num+"\nA ação foi "+result+"\n Clique 'Ok' para continuar");
      return result;
    } 
  } 
  
        
      
  //função principal de combate
 function combate(vilao, personagem) {
       
       
       do {
       //ataque do vilão
      do{
       
       var acao = prompt("Ataque do " + vilao.nome+ " escolha sua ação. 1-esquiva/2- defesa/3- fugir"); 
       
        if(acao == "1"){
          
       dado.sorteio();
       //esquiva certa
       if(result == "acertou"){
         
         prompt("Você esquivou do ataque do "+vilao.nome+ " de dano "+ vilao.ataque+"\n seus pontos vitais agora são de "+ personagem.vida);
         
       //esquiva perfeita
       }else if(result == "perfeito"){
         
         prompt("Você esquivou do ataque do "+vilao.nome+ " perfeitamente \nseus pontos vitais agora são de "+ personagem.vida);

         
         
       }else{
         
        
         personagem.vida = personagem.vida - vilao.ataque;
         prompt("Você não esquivou do ataque do "+vilao.nome+ " de dano "+ vilao.ataque+"\n seus pontos vitais agora são de "+ personagem.vida);
         
       }
        //bloquear  
        }else if(acao == "2"){
          
        dado.sorteio();
        //erro de bloqueio
       if(result == "crítico"){
         vilao.ataque  += 10;
         personagem.vida -= vilao.ataque;
         
         prompt("Você não bloqueou do ataque do "+vilao.nome+ " de dano "+ vilao.ataque+"\n seus pontos vitais agora são de "+ personagem.vida);
         vilao.ataque == vilao.ataque;
         //bloqueio certo
          }else if(result == "acertou"){
          
            vilao.ataque -=  personagem.defesa;
            personagem.vida -= vilao.ataque;
            
            prompt("Você bloqueou do ataque do "+vilao.nome+ " de dano "+ vilao.ataque+"\nseus pontos vitais agora são de "+ personagem.vida);
            
          }else{
         
         prompt("Você defendeu o ataque do "+vilao.nome+ " perfeitamente,\nseus pontos vitais agora são de "+ personagem.vida);
         
       }
          
          }else if(acao == "3"){
            
            prompt("Corra fujão! ");
            break;
            
            
            
            
          }else{
          
          
          prompt("Opção inválida!\nEscolha uma opção válida\nClique 'ok' para continuar!");
          acao = "";
          }
        }while(acao =="");
        
       do{ 
        //ataque do personagem
        var reacao = prompt("Ataque do " + personagem.nome+ " escolha sua ação. 1-ataque/2-especial 3-fugir"); 
        
        if(reacao == '1'){
          dado.sorteio();
       //atque certo
       if(result == "acertou"){
        
         vilao.vida -= personagem.ataque;
         
          prompt("Você atacou o "+vilao.nome+ " e causou dano de "+ personagem.ataque+"\n os pontos vitais dele agora são de "+ vilao.vida +" \n Clique 'ok' para continuar");
       }else if(result == "crítico"){
         
         
         prompt("Ataque mal sucedido\nClique 'Ok' para prosseguir.");
       }else{
         
         vilao.vida = vilao.vida - personagem.especial();
         
         prompt("Ataque perfeito!\nVocê atacou o "+vilao.nome+ " com "+personagem.esp+" e causou dano de "+ personagem.especial()+"\nSeus pontos vitais são de "+personagem.vida+" e os pontos vitais dele agora são de "+ vilao.vida+" \n Clique 'ok' para continuar");
       }
          
        }else if(reacao == '2'){
          dado.sorteio();
          if(result == "acertou"){
            personagem.vida = personagem.vida-5;
            vilao.vida = vilao.vida - personagem.especial();
            
          prompt("O ataque especial esgota força vital do(a) "+personagem.nome+" em 5 pontos!\nClique em 'ok' para prosseguir");
          prompt("Você atacou o "+vilao.nome+ " com "+personagem.esp+" e causou dano de "+ personagem.especial()+"\nSeus pontos vitais são de "+personagem.vida+" e os pontos vitais dele agora são de "+ vilao.vida+" \n Clique 'ok' para continuar");
          
          
          }else if(result== "crítico"){
           //erro de especial 
            personagem.vida = personagem.vida -5;
            prompt("Você errou o "+personagem.esp+" seus pontos vitais agora são de "+personagem.vida);
          }else{
            //especial perfeito
            prompt("Ataque perfeito!\nVocê atacou o "+vilao.nome+ " com "+personagem.esp+" e causou dano de "+ personagem.especial()+"\nSeus pontos vitais são de "+personagem.vida+" e os pontos vitais dele agora são de "+ vilao.vida+" \n Clique 'ok' para continuar");
          }
          
        }else{
          prompt("Opção inválida!\nEscolha uma opção válida\nClique 'ok' para continuar!");
          reacao = "";
        }
       }while(reacao == "");
          
          if(vilao.vida <= 0){
            
            console.log("Parabéns, você derrotou o inimigo!");
            break;
            
            }else if(personagem.vida <= 0){
              
              console.log("Você perdeu!");
              break;
              
            }
            
          }while(personagem.vida >0 && vilao.vida >0);
      
       }
      
  //inicio do jogo
  do{
    
    var escolha = prompt("Escolha seu personagem : 1 - mago, 2- ladra, 3- guerreiro");
  
      if(escolha == "1"){
        
        personagem = mago;
        
      }else if(escolha == "2"){
        
        personagem = ladra;
        
      }else if(escolha == "3"){
        
        personagem = guerreiro;
        
      }else{
        escolha = "";
        
        prompt("Opção inválida! \nEscolha uma opção válida\nClique 'ok' para continuar!");
      }
  }while(escolha == "");
     
   
   //escolhe    o personagem
    do{
      prompt("Ok, você escolheu o " + personagem.nome +" ele possui:\n"+ personagem.vida+" pontos de vida \n Clique em 'ok' para prosseguir.");
      
      var desafio = prompt("Oh, não..."+ vilao.nome+ " à vista!\n"+ vilao.nome+ " possui " + vilao.vida+ " pontos de vida! :/ \n"+ "Deseja iniciar um combate ? S = sim , N = não ");
      
      if(desafio == "S"){
        
        combate(vilao, personagem);
        
      }else if(desafio == "N"){
        
        prompt("Corra fujão!");
        console.log("Você perdeu!")
        
      }else{
        prompt("Opção inválida!\n Digite uma opção válida !\nClique 'Ok' para prosseguir.");
        desafio = "";
      }
    }while(desafio =="");
  • In Java it is possible to do break label, where label is a label (any identifier followed by two points, for example loop_externo:) that you give to a line. Having Javascript inspired (maybe, I don’t remember) in some things in Java, maybe you have this feature too.

1 answer

-3

Hello, Renan, hello, Renan. How are you?

Can you use the

break;

I don’t know if that would be it. But try :D

  • Thanks Alexsander I used but the loop was not interrupted.

  • All its repeating structures is problematic or only within the "combat function"?

  • Only within the combat function

Browser other questions tagged

You are not signed in. Login or sign up in order to post.