Javascript布尔混淆
修复了问题,不确定如何修复。感谢您的回复:) 我的布尔值(Javascript布尔混淆,javascript,Javascript,修复了问题,不确定如何修复。感谢您的回复:) 我的布尔值(isname)保持为真,我不知道为什么。在这个简单的游戏中,触发时会出现一个鬼魂,这部分工作正常。除非我离开“房间”回来,它会看起来好像鬼魂不在那里。只有当幽灵最初与玩家在同一房间触发时,布尔值才会正确地在完整代码中注册。如果play试图离开,则无法重新定位幽灵,即布尔值不会对应于两个整数 releaseGhost(); startTimer(); var isSame=“false”; var鬼影定位; var mapLocatio
isname
)保持为真,我不知道为什么。在这个简单的游戏中,触发时会出现一个鬼魂,这部分工作正常。除非我离开“房间”回来,它会看起来好像鬼魂不在那里。只有当幽灵最初与玩家在同一房间触发时,布尔值才会正确地在完整代码中注册。如果play试图离开,则无法重新定位幽灵,即布尔值不会对应于两个整数
releaseGhost();
startTimer();
var isSame=“false”;
var鬼影定位;
var mapLocation=5;
函数gameOver(){
如果(IsName==真){
gameMessage=“鬼杀了你。游戏结束!”;
警惕(“鬼魂杀了你,游戏结束!”);
document.body.innerHTML=“游戏结束!”;
}
}
//确定是否已过5秒
函数moveGhost(){
ghostLocation=Math.floor(Math.random()*12);
}
函数startTimer(){
如果(mapLocation==重影位置){
IsName=true;
窗口设置间隔(gameOver,5000);
}否则{
IsName=假;
}
}
函数releaseGhost(){
ghostLocation=Math.floor(Math.random()*12);
window.setInterval(moveGhost,30000);
}
窗口设置间隔(测试,1000);
功能测试(){
mapLocation=Math.floor(Math.random()*12);
日志(ISName、mapLocation、ghostLocation);
}
您描述了如何以及何时设置此布尔值,这让人有点困惑。但是,在我的初始视图中,我可以看到IsSame变量尚未声明
我只能认为,由于IsSame没有声明为全局变量,它默认为其默认值,这是错误的
在代码顶部,您应该这样声明变量:
var isSame = false;
请注意,虽然可以在不首先声明变量的情况下使用该变量,但这不是一种好的做法,会在不同的浏览器中导致问题您的问题就在这个函数中
function startTimer() {
ghostLocation = mapLocation;
if(mapLocation === ghostLocation) {
isSame = true;
window.setInterval(gameOver, 5000);
} else {
isSame = false;
}
}
在第一行中,将mapLocation
的值指定给GhoLocation
。因此比较mapLocation===GhoLocation
总是true
,因此行“isSame=true
”总是运行,它将值true
分配给isSame
在这一点上,您应该重新思考代码,并调试代码。在
startTimer
函数中,您将重影定位
设置为相等映射定位
,然后立即测试它们是否相等,这永远都是真的,因为你只是将它们设置为相同的值。这是原始版本,太长了,无法发布。我已经编辑,包括这一点和其他建议,现在它不会评估为真。我已经醒了24个多小时了,所以我很确定我忽略了一些简单的事情。你能提供原始代码,而不添加任何测试内容吗?对不起,我添加了这一行是为了强制它们相等,以查看错误是否在我的函数中。当我这么做的时候,它的计算结果总是真的,因为我已经编辑了代码;它永远不会被认为是真的。