2017-09-14 9 views
0

JavaScriptを学んでいますが、現在alertウィンドウで簡単なテキストゲームを作成しようとしています。 JavaScriptを起動するだけで、私は既にif else var functionのような基本を知っています...私は自分のコードを入力しました。fight()という別の関数への移行があり、それ以上のウィンドウが表示されなくなったり、 。 HTMLに何かを追加する必要があるかもしれないが、何がわからないのか...間違いなく誤ってコードを書いたことを確認したが、うまく書けたと確信している。私のコードは特定の関数をロードできません

<head> 
    <meta charset="UTF-8"> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
    <script> 
     function startGame() { 
      var start = prompt("1. Start/2. Exit"); 
      if (start == "1") { 
       game(); 
      } else if (start == "2") { 
       alert("Goodbye!"); 
       exit(); 
      } 
     } 
     function game() { 
      var playerName = prompt("What is your name?"); 
      var playerHealth = 100; 
      var playerDamage = 7; 
      var playerClass = "Farmer"; 
      var playerGold = 50; 
      alert("You are a normal farmer, dreamed a lot about adventuring! Now you want to become adventurer!"); 
      alert("You start from nothing, and everyone hope you become something!"); 
      alert("You have " + playerHealth + " health, " + playerDamage + " damage and " + playerGold + " gold!"); 
      var choice = prompt("1. Walk/2. Talk"); 
      if (choice == "1") { 
       alert("You are walking around the town..."); 
       var banditEvent = Math.floor(Math.random() * 100) + 1; 
       if (banditEvent => 70) { 
        alert("You were suddenly attacked by a bandit group!"); 
        var enemy = "Bandit"; 
        var enemyHealth = Math.floor(Math.random() * 75) + 20; 
        var enemyDamage = Math.floor(Math.random() * 25) + 5; 
        var enemyDropRate = Math.floor(Math.random() * 100) + 50; 
        fight(); 
       } 
      } else if (choice == "2") { 
       alert("You wanted to talk with someone!"); 
       // No code here until I fix the game... 
      } 
     } 
     function fight() { 
      if (playerHealth <= 0) { 
       alert("You died!"); 
       startGame(); 
      } 
      alert("Bandit: " + enemyHealth + " Health/" + enemyDamage + " Damage"); 
      var fightChoice = prompt("1. Attack/2. Do nothing"); 
      if (fightChoice == "1") { 
       enemyHealth = enemyHealth - playerDamage; 
       alert("You attacked the " + enemy + " and dealt " + playerDamage + " damage!"); 
       alert(enemy + " now have " + enemyHealth + " health left!"); 
       playerHealth = playerHealth - enemyDamage; 
       alert(enemy + " attacked you!"); 
       alert(enemy + " dealt " + enemyDamage + " damage to you!"); 
       alert("You now have " + playerHealth + " health!"); 
       fight(); 
      } else if (fightChoice == "2") { 
       playerHealth = playerHealth - enemyDamage; 
       alert(enemy + " attacked you!"); 
       alert(enemy + " dealt " + enemyDamage + " damage to you!"); 
       alert("You now have " + playerHealth + " health!"); 
       fight(); 
      } 
     } 
     function exit() { 
     } 
    </script> 
    <style> 

    </style> 
</head> 

<body onload="startGame();"> 

</body> 

私はきれいにそれを説明したいと考えています。誰にも助けてくれてありがとう!

+0

を役に立てば幸い、私は少し遅れ応答、 だけでJavaScriptのだと思います戦闘機能に。 https://stackoverflow.com/questions/500431/what-is-the-scope-of-variables-in-javascript – epascarello

+0

ステップデバッガによるjavascriptのステップを使用していますか? – GGO

+0

今私は自分のミスがどこにあるかを見ます!私はそれについて知らなかった。ありがとうございました! @epascarello – Teki

答えて

0
var playerHealth = 100; 
var playerDamage = 7; 
var playerClass = "Farmer"; 
var playerGold = 50; 
function Fight(){ ... }; 
function game() { ... }; 

複数の関数で使用される変数は、関数内ではなくグローバルに宣言する必要があります。変数は一時使用

+0

ありがとう、今私は間違いを見る。 – Teki

+0

質問を閉じるために解決したら答えを確認してください – GGO

0

であれば代わりに使用すると、関数内で変数を宣言することができ、私はゲームの中で定義された変数にアクセスできないため、これは

 var playerName = prompt("What is your name?"); 
     var playerHealth = 100; 
     var playerDamage = 7; 
     var playerClass = "Farmer"; 
     var playerGold = 50; 
    var enemyHealth=0; 
     var enemyDamage ; 
    var enemy; 
       var enemyDropRate=0; 

    function startGame() { 
     var start = prompt("1. Start/2. Exit"); 
     if (start == "1") { 
      game(); 
     } else if (start == "2") { 
      alert("Goodbye!"); 
      exit(); 
     } 
    } 


    function game() { 

     alert("You are a normal farmer, dreamed a lot about adventuring! Now you want to become adventurer!"); 
     alert("You start from nothing, and everyone hope you become something!"); 
     alert("You have " + playerHealth + " health, " + playerDamage + " damage and " + playerGold + " gold!"); 
     var choice = prompt("1. Walk/2. Talk"); 
     if (choice == "1") { 
      alert("You are walking around the town..."); 
      var banditEvent = Math.floor(Math.random() * 100) + 1; 
      if (banditEvent => 70) { 
       alert("You were suddenly attacked by a bandit group!"); 
       enemy = "Bandit"; 
       enemyHealth = Math.floor(Math.random() * 75) + 20; 
       enemyDamage = Math.floor(Math.random() * 25) + 5; 
       enemyDropRate = Math.floor(Math.random() * 100) + 50; 
       fight(); 
      } 
     } else if (choice == "2") { 
      alert("You wanted to talk with someone!"); 
      // No code here until I fix the game... 
     } 
    } 
    function fight() { 
     if (playerHealth <= 0) { 
      alert("You died!"); 
      startGame(); 
     } 
     alert("Bandit: " + enemyHealth + " Health/" + enemyDamage + " Damage"); 
     var fightChoice = prompt("1. Attack/2. Do nothing"); 
     if (fightChoice == "1") { 
      enemyHealth = enemyHealth - playerDamage; 
      alert("You attacked the " + enemy + " and dealt " + playerDamage + " damage!"); 
      alert(enemy + " now have " + enemyHealth + " health left!"); 
      playerHealth = playerHealth - enemyDamage; 
      alert(enemy + " attacked you!"); 
      alert(enemy + " dealt " + enemyDamage + " damage to you!"); 
      alert("You now have " + playerHealth + " health!"); 
      fight(); 
     } else if (fightChoice == "2") { 
      playerHealth = playerHealth - enemyDamage; 
      alert(enemy + " attacked you!"); 
      alert(enemy + " dealt " + enemyDamage + " damage to you!"); 
      alert("You now have " + playerHealth + " health!"); 
      fight(); 
     } 
    } 
    function exit() { 
    } 
+0

もちろんそれは役に立ちます!たくさん! – Teki

+0

ゲームコードをリファクタリングする最善の方法は、OOP(Oriented Object Programming)です。 @テキ、もしあなたが本当にjavascriptに興味があれば、私はそれをテストするアドバイスをしています。それは非常に良い構造コードです。このタイプのアプリケーションには完璧です。 – GGO

+0

ええ、私はJavaScriptとウェブ開発に非常に興味があります。私はJavaScriptを毎日やっていて、チュートリアルなどを見ています。 'キャンバス'などの2Dゲームを作るでしょう...とにかくアドバイスをいただきありがとうございます! @GabrielGourrat – Teki

関連する問題