解决了问题,不确定如何。感谢您的回复:)
我的布尔值(isSame
)保持不变,我不知道为什么。在这个简单的游戏中,一个幽灵会在触发时出现,这部分有效。除非我离开"房间"并且回来看起来好像幽灵不在那里。当幽灵最初在与玩家相同的房间内被触发时,布尔值仅在完整代码中正确注册。如果游戏试图离开,则不能重新定位重影,即布尔值不对应于两个整数。
releaseGhost();
startTimer();
var isSame = "false";
var ghostLocation;
var mapLocation = 5;
function gameOver() {
if(isSame === true) {
gameMessage = "The ghost has killed you. GAME OVER!";
alert("The ghost has killed you. GAME OVER!");
document.body.innerHTML = "GAME OVER!";
}
}
//determines if 5 seconds have passed
function moveGhost() {
ghostLocation = Math.floor(Math.random()*12);
}
function startTimer() {
if(mapLocation === ghostLocation) {
isSame = true;
window.setInterval(gameOver, 5000);
} else {
isSame = false;
}
}
function releaseGhost(){
ghostLocation = Math.floor(Math.random()*12);
window.setInterval(moveGhost, 30000);
}
window.setInterval(test, 1000);
function test(){
mapLocation = Math.floor(Math.random()*12);
console.log(isSame, mapLocation, ghostLocation);
}

答案 0 :(得分:0)
你的描述有点令人困惑,应该如何以及何时设置这个布尔值。但是,在我的初始视图中,我可以看到IsSame变量尚未声明。
我只能认为因为IsSame没有被声明为全局变量,所以它默认为默认值,这是假的。
在代码的顶部,您应该声明您的变量:
var isSame = false;
请注意,虽然可以在不首先声明变量的情况下使用变量,但这不是一种好的做法,会导致不同浏览器出现问题
答案 1 :(得分:0)
您的问题出在此功能
function startTimer() {
ghostLocation = mapLocation;
if(mapLocation === ghostLocation) {
isSame = true;
window.setInterval(gameOver, 5000);
} else {
isSame = false;
}
}
在第一行中,您将mapLocation
的值指定给ghosLocation
。因此,比较mapLocation === ghosLocation
总是 true
,因此始终会运行“isSame = true
”行,这会将值true
分配给{{1 }}
你应该重新考虑你的代码,你应该调试你的代码。