Advertisement
bebo231312312321

Untitled

Mar 24th, 2023
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function HeroesGame(input){
  2.     let heroesCount = input.shift();
  3.     let heroObj ={};
  4.     for(let i = 0; i <heroesCount; i++){
  5.         let tokens = input[i];
  6.  
  7.         tokens = tokens.split(" ");  
  8.  
  9.         heroObj[tokens[0]] = [Number(tokens[1]), Number(tokens[2])];
  10.  
  11.     if(Number(tokens[1]) > 100){
  12.         tokens[1] = 100;
  13.     }
  14.     if(Number(tokens[2]) > 200){
  15.         tokens[2] = 200;
  16.     }
  17. }
  18.     input.splice(0, heroesCount)
  19.  
  20.     let i = 0;
  21.     let command = input[i];
  22.     while(command !== "End"){
  23.         let tokens = command.split(" - ");
  24.         let action  = tokens[0];
  25.         let name = tokens[1];
  26.         if(action === "CastSpell"){
  27.             let mpNeed = Number(tokens[2]);
  28.             let spellName = tokens[3]
  29.             castSpell(name,mpNeed, spellName)
  30.         }else if(action === "TakeDamage"){
  31.             let dmg = Number(tokens[2]);
  32.             let attacker = tokens[3];
  33.             takeDmg(name, dmg, attacker);
  34.         }else if(action === "Recharge"){
  35.             let amount = Number(tokens[2]);
  36.            recharge(name, amount)
  37.         }else if(action === "Heal"){
  38.             let amount = Number(tokens[2]);
  39.             heal(name, amount)
  40.         }
  41.      
  42.         i++
  43.         command = input[i];
  44.     }
  45.      
  46.     for(let key in heroObj){
  47.         console.log(key)
  48.         console.log(`  HP: ${heroObj[key][0]}`)
  49.         console.log(`  MP: ${heroObj[key][1]}`)
  50.     }
  51.      
  52.     function castSpell(name, mpNeeded, spellName){
  53.         if(heroObj[name][1] >= mpNeeded){
  54.             console.log(`${name} has successfully cast ${spellName} and now has ${heroObj[name][1] - mpNeeded} MP!`)
  55.             heroObj[name][1] -= mpNeeded;
  56.         }else{console.log(`${name} does not have enough MP to cast ${spellName}!`);}
  57.     }
  58.     function takeDmg(name, dmg, attacker){
  59.         if(heroObj[name][0] > dmg){
  60.             console.log(`${name} was hit for ${dmg} HP by ${attacker} and now has ${heroObj[name][0] - dmg} HP left!`)
  61.             heroObj[name][0] -= dmg;
  62.         }else{
  63.             console.log(`${name} has been killed by ${attacker}!`);
  64.             delete heroObj[name];
  65.         }
  66.     }
  67.     function recharge(name, amount){
  68.         if(heroObj[name][1] < 200){
  69.             let forDiff = heroObj[name][1]
  70.             heroObj[name][1] = heroObj[name][1] + amount;
  71.             if(heroObj[name][1] > 200){
  72.                 let diff = 200 - forDiff;
  73.                 heroObj[name][1] = 200;
  74.                 console.log(`${name} recharged for ${diff} MP!`);
  75.             }else{
  76.                 console.log(`${name} recharged for ${amount} MP!`);
  77.             }
  78.         }
  79.  
  80.      }
  81.     //  function heal(name, amount){
  82.     //     if(heroObj[name][0] < 100){
  83.     //         let forDiff = heroObj[name][0]
  84.     //         heroObj[name][0] = heroObj[name][0] + amount;
  85.     //         if(heroObj[name][0] > 100){
  86.     //             let diff = 100 - forDiff;
  87.     //             heroObj[name][0] = 100;
  88.     //             console.log(`${name} healed for ${diff} HP!`);
  89.     //         }else{
  90.     //             console.log(`${name} healed for ${amount} HP!`);
  91.     //         }
  92.     //     }
  93.  
  94.     //  }
  95.     function heal(name, amount){
  96.         let diff = Math.min((100 - heroObj[name][0]), amount)
  97.        
  98.         heroObj[name][0]+=diff
  99.         console.log(`${name} healed for ${diff} HP!`)
  100.             }
  101.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement