2016-12-04 4 views
1

私はIIでユーザに数字を入力するようにミニゲームプログラムを用意しています。対戦相手の変数。他の賢明な、相手は私に損害を与えます。このプログラムでは減算を処理していますが、問題は、ファイルをnode.js(ノードfileName.js 4)で実行するたびに、プログラムのすべての変数がリセットされることです。 「損傷」が「hp」から差し引かれると、hpは保存されますが、リセットされたままになります。 mainCharacterとはリセットしないでください。node.jsでファイルを実行した後に "inquirer"を使用して変数の値を保存する

var StrawberryCough = require("inquirer"); 

var mainCharacter = 70; 
var zombie = { 
    hp: 15, 
    num: 0 
} 

StrawberryCough.prompt([ 

     { 
      type: "input", 
      message: "Random Number 1-5: ", 
      name: "number" 
     } 

    ]).then(function(user){ 

     parseInt(user.number); 
     var ranNum = Math.round(Math.random() * (5 - 1) + 1); 
     zombie.num = ranNum; 

     if(user.number === zombie.num) 
     { 
      var damage = Math.round(Math.random() * (5 - 1) + 1); 
      console.log("Character Damage: ", damage); 
      zombie.hp -= damage; 
      console.log("zombie hp", zombie.hp); 
      if(zombie.hp <= 0) 
      { 
       console.log("You win!") 
       return; 
      } 
     } 
     else if(user.number !== zombie.num) 
     { 
      var zomDamage = Math.round(Math.random() * (5 - 1) + 1); 
      console.log("Zombie Damage: ", zomDamage); 
      mainCharacter -= zomDamage; 
      console.log("main hp", mainCharacter); 
      if(mainCharacter <= 0) 
      { 
       console.log("You lose!"); 
       return; 
      } 
     } 
    }); 

答えて

1

あなたはデータが持続する場合は、ファイルに保存、キー値ストアにデータベースを見なければならない...そうでなければ、ファイルを実行するたびに:

var mainCharacter = 70; 
var zombie = { 
    hp: 15, 
    num: 0 
} 

が設定されますそれらの行が実行されたときにファイルがロードされたときの値ですが、値が永続的に保存されることはなく、スクリプトが終了した後も値は存在しなくなります。

あなたが迅速かつ断片的な解決策を探しているように私は、ファイルシステムを使用してのようなものへの保存を示唆しているように見えます:gameMemory.json gameMemory.jsonの

内容:

{ 
    "mainCharacter" : 70, 
    "zombie" : { 
     "hp": 15, 
     "num": 0 
    } 
} 
あなたは、変数を操作し終わったら次に

fs = require('fs'); 
//loads the gameMemory into a json object 
var gameMemory =JSON.parse(fs.readFileSync('./gameMemory.json', 'utf8')); 

をし、それらが持続します:

gameMemory.jsから値をロード

fs.writeFileSync('./gameMemory.json', JSON.stringify(gameMemory, null, 2) , 'utf-8'); 
+0

ありがとうございます。別のファイルを作成することも考えましたが、代わりにexports.varを使用しました。私はあなたのseuggestionsを試してみます、ありがとう –

+0

あなたはそれにどのようにアプローチするかは、あなたがそれと一緒に行くことをどれほど期待しているかによって決まります。 あなたのゲームがコマンドラインからスクリプトを実行しているだけで、そのスクリプトを実行する「ラウンド」の間に持続したい場合は、最も簡単な方法はjsonファイルに保存することです。 さらに進んで、ファイルを常に読み書きするパフォーマンスが心配であれば、明らかに他にもできることがありますが、ゲームのこの段階では、マイクロ最適化と過剰殺戮。 – isaacdre

+0

これはあなたの質問に答えましたか? – isaacdre

関連する問題