我正在为最终项目制作一个简单的反应时间游戏。 我们使用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也会变得可见。
任何人都知道会导致这种情况的原因吗?
答案 0 :(得分:0)
对你的敌人时间数学使用浮点数,即400.0,否则你得到0/1秒并且不使用毫秒,并且它使用数学整数。特别是将你的敌人时间作为一个浮点数投射,暂时,如果你打印它可能是一个整数。它是一个MAJOR js编码细节,如果您认为101/50 = 2.05,它不会等于2,那么您将花费几个小时的时间,因此它除以等于2,因此除以50.0并且与所有第二/ ms任务相同。
使用EnemyTime作为所有脚本的全局变量,目前,代码在所有脚本中都有一个名为EnemyTime的不同函数,后者没有任何值。
使用print查看其他条件何时起作用,在打印enemyTime值时指定打印。
通过打印令人困惑的变量,您应该如何解决问题。