Javascript布尔混淆

时间:2015-12-07 10:16:45

标签: javascript

解决了问题,不确定如何。感谢您的回复:)

http://jsfiddle.net/w30cfdqk/

我的布尔值(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);
  }




2 个答案:

答案 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 }}

你应该重新考虑你的代码,你应该调试你的代码。