我正在为最终项目制作一个简单的 react 时间游戏。 我们使用 javascript 来支持游戏中的功能,我的大部分代码都处于工作状态,但我有一个 if 条件语句给我带来了麻烦。 这是代码
function fireTime() {
setTimeout(ShotsFired, time);
function ShotsFired() {
fire.style.visibility = "visible";
createdTime = Date.now();
console.log(createdTime);
EnemyTime = Math.floor((Math.random() * 1000) + 400);
setTimeout(EnemyShoot, EnemyTime)
function EnemyShoot() {
console.log(EnemyTime);
gameplay();
}
function gameplay() {
reactionTime = -(createdTime - clickedTime);
var EnemyTime;
console.log(reactionTime);
if (reactionTime < EnemyTime) {
alert("Wow you beat him! Congrats!");
fire.style.visibility = "hidden";
clickedTime = 0;
createdTime = 0;
reactionTime = 0;
scavnumber++;
BGnumber++;
DesertBG.src = "images/Desert" + BGnumber + ".png";
scav.src = "images/scav" + scavnumber + ".png";
fireTime();
} else {
EndScreen.style.visibility = "visible";
}
}
这不是完整的代码,只是将游戏推进到下一个级别的函数。
无论出于何种原因,即使reactionTime小于EnemyTime,EndScreen也会变得可见。
谁知道这可能是什么原因造成的?
最佳答案
对你的敌人时间数学使用浮点,即 400.0 ,否则你会得到 0/1 秒并且不使用毫秒,并且它正在使用数学整数。具体来说,将您的敌人时间转换为 float ,目前,如果您打印它,它可能是一个整数。这是一个主要的 js 编码细节,如果您认为 101/50 = 2.05,那么您将来将花费数小时的时间寻找错误,但它不等于 2,因此除以 50.0,并且与所有秒/毫秒任务相同。
使用 EnemyTime 作为所有脚本的全局变量,目前,代码中所有脚本中都有一个名为 EnemyTime 的不同函数,后者没有任何值(value)。
使用 print 来查看 else 条件何时起作用,并在打印中指定一个 print 和敌人时间值。
这就是您应该通过打印令人困惑的变量来解决问题的方法。
关于javascript - 条件语句无法识别变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47667856/