我有一个编程问题,不是太先进。出于某种原因,当我执行以下代码时,setTimeout方法仅在第一次调用时创建暂停。当再次调用它时,setTimeout在执行它的函数之前不会创建暂停。有谁知道为什么会这样,以及如何解决这个问题?
另外,是否有可能创建一个在每次执行前暂停的while循环? 我的代码如下。
var slaying = true;
var youHit = Math.floor(Math.random()*4 + 1);
var damageThisRound = Math.floor(Math.random()*5 + 1);
var totalDamage = 0;
var timer1 = null;
function swing(percentOfMiss) {
此if语句采用参数除以25.因为youHit最初生成一个 1到4之间的整数,如果我们将参数设置为25,我们将得到1/4(25%)的镜头 想念龙。如果它被设置为50,我们将有一个四分之二(50%)的射击错过龙等...
为了增加遗失的可能性,只需在调用函数时提高参数编号。 * /
if (youHit <= parseFloat(percentOfMiss) / 25) {
//youHit is set to 0, or false
youHit = 0;
} else {
如果youHit生成的随机数高于等号右边的数字,则youHit设置为1,或者为true。
youHit = 1;
}
}
该功能的目的:启动战斗回合。检查我们是否击中了龙,我们做了多少伤害,以及龙是否已经死亡。每2秒开始一次新的战斗转弯。在最后一次战斗转弯时,将“Game Over”记录到控制台。
function attack(roundTime) {
if (slaying) {
if (youHit) {
console.log("You hit the dragon!");
totalDamage += damageThisRound;
console.log("You did " + damageThisRound + " damage this round.");
if (totalDamage >= 4) {
console.log("You slew the dragon! Congrats!");
//If you killed the dragon, stop slaying by breaking the while loop...
slaying = false;
//...and call the next combat turn. This will log "Game Over".
timer1 = setTimeout(attack, roundTime);
} else {
//Otherwise if the dragon's still alive, set new damage for this round...
damageThisRound = Math.floor(Math.random()*5 + 1);
//...see if you hit the dragon...
youHit = Math.floor(Math.random()*4 + 1);
......并召回攻击()。在roundTime指定的时间后调用攻击。 这会在程序中造成延迟,从而产生战斗转向的幻觉。* /
timer1 = setTimeout(attack, roundTime);
}
} else {
//If you miss, the dragon kills you...
console.log("You missed... and the dragon killed you. Sorry.");
//... and we break the while loop by setting slaying to false...
slaying = false;
//...and call next combat turn. This will log "Game Over".
timer1 = setTimeout(attack, roundTime);
}
} else {
当杀戮设置为false时,我们现在在下一个(也是最后一个)转弯时打印Game Over。
console.log("Game Over");
}
}
火焰摆动和攻击功能
swing(25);
attack(1500);