Ich praktiziere Schleifen in Javascript, aber während es schreiben eine bekam eine Endlosschleife, die ich nicht lösen kann Ich bin sicher, es ist ein Rückblick ist 20/20 Art von Problem aber Ich kann es nicht sehen. Die Schleife ist in meleeChoiceIch kann nicht herausfinden, warum Endlosschleife auftritt
/*var meleeValues = function() {*/
var userDmg = Math.floor(Math.random()* 5 + 10);
var ghoulDmg = Math.floor(Math.random()* 4 + 8);
var ghoulHealth = 100;
var userHealth = 110 ;
var userTotalDmg = 0 ;
var ghoulTotalDmg = 0;
var firstAtk = function() {
firstStrike = Math.floor(Math.random()* 2 + 1);
if(firstStrike === 1) {
ghoulHealth = 100 - userTotalDmg;
console.log("You hit the ghoul for " + userDmg + " damage");
console.log("The ghoul has " + ghoulHealth + " health left");
userHealth = 110 - ghoulTotalDmg;
console.log("Ghoul hits you for " + userDmg + " damage");
console.log("You have " + userHealth + " health left");
} else {
userHealth = 110 - ghoulTotalDmg;
console.log("Ghoul hits you for " + userDmg + " damage");
console.log("You have " + userHealth + " health left");
ghoulHealth = 100 - userTotalDmg;
console.log("You hit the ghoul for " + userDmg + " damage");
console.log("The ghoul has " + ghoulHealth + " health left");
}
}
var meleeChoice = function() {
while(ghoulHealth > 0 && userHealth > 0) {
userTotalDmg += userDmg;
ghoulTotalDmg += ghoulDmg;
firstAtk;
userDmg = Math.floor(Math.random()* 5 + 10);
ghoulDmg = Math.floor(Math.random()* 4 + 8);
if (ghoulHealth < 0 && userHealth > 0) {
console.log("Congratulations, you have defeated the ghoul and gained 20xp");
} else if (ghoulHealth > 0 && userHealth < 0) {
console.log("You have been slain by the ghoul, may your corpse serve as a warning to future explorers");
} else {
console.log("It's not over yet");
}
}
}
meleeChoice()
/*var user = prompt("You run into a ghoul whilst exploring a dungeon, what do you choose to do?", "Fight | Sneak | Run").toLowerCase();
switch(user) {
case "fight":
var fight = prompt("Do you use melee or magic").toLowerCase()
if(fight === "melee") {
meleeChoice
}
}*/
Thanks
nennen Sie 'firstAtk' ohne Klammern und so weiter' meleeChoice' später. im Grunde machst du nichts damit, nur den Verweis auf void zu schieben. –
Beachten Sie, dass Sie in FirstAtk grundsätzlich den gleichen Code verwenden. Ziehen Sie in Betracht, separate userAttack() - und ghoulAttack() -Funktionen zu verwenden, bei denen Sie die Reihenfolge ändern, je nachdem, wer als erster auftritt. –