特定の入力に基づいて正しいコンソール ログ ステートメントを出力するテキスト アドベンチャーを作成しようとしています。ゴブリンが十分な攻撃ダメージを与えてプレイヤーの防御力が 0 未満になった場合、コンソール ログに「ゴブリンがやった」×「ダメージ!」が出力されるようにしたい。コードの上部にある変数リストは次のとおりです。
//player stats
var atk= 1;
var def= 1;
var hp= 10;
var mp= 0;
var block= 1;
var magic= 0;
//goblin stats
var gobAtk= [3,4,5];
var gobDef= 1;
var gobHp= 5;
var gobMagDef= 0;
var rand= Math.floor(Math.random()* gobAtk.length);
コードの最後で、プレイヤーがコードの前のセクションでゴブリンを攻撃した後、ゴブリンの HP (var gobHp) がゼロにならない限り、特定の if/else 条件が呼び出されます。ここにあります:
else {
def-=rand;
if(def<0) {
hp-=Math.abs(rand);
console.log("The Goblin did"+ " "+ Math.abs(rand)+ " "+ "Damage!");
if(hp<=0) {
console.log("The Goblin defeated you! You died");
console.log("Game Over.");
}
}
else {
console.log("The Goblin did 0 damage!");
}
}
しかし、コードを何度実行しても、コンソール ログには常に「The Goblin did 0 Damage!」と出力されます。ゴブリンの攻撃がプレイヤーの防御をマイナスして 0 未満になったとしても。プレイヤーの防御が 0 未満の場合、コンソール ログは正しいダメージ量を出力するはずです。