You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

杀手揭晓/被击败后游戏循环无法重置的技术问题排查

问题与修复

问题概述

正在开发一款幸存者对抗杀手的游戏,规则是剩余角色不足4人时,在游戏结束阶段揭晓杀手身份。目前遇到两个问题:

  1. endGame()函数中,判断「杀手名称已揭晓且新章节按钮被点击则重载游戏」的逻辑未生效
  2. 出现语法错误:Uncaught SyntaxError: Invalid left-hand side in assignment (at game.js:236:7)

错误原因

1. 语法错误直接原因

在endGame()的if判断里犯了两个低级错误:

  • 使用=赋值运算符替代了===比较运算符:document.getElementById("objecttext").innerHTML = killer是把killer赋值给元素内容,不是判断是否相等,这就是报错的根源
  • 使用&位运算符替代了&&逻辑与运算符:&是二进制位运算,逻辑判断应该用&&

2. 按钮点击判断错误

DOM元素没有.clicked属性,无法通过document.getElementById("buttonp").clicked === true来判断按钮是否被点击,必须通过事件监听追踪点击状态

3. 其他潜在逻辑错误

  • playEpisode()中判断剩余角色的条件错误:castMembers < 4,数组不能直接和数字比较,应该用castMembers.length < 4
  • openingScene()和playEpisode()的for循环错误:for (let i = 0; i < castMembers; i++),应该用castMembers.length作为循环上限
  • openingScene()中if (lowestPlayer.totalStats=0)是赋值操作,不是比较

修复代码

全局变量新增点击状态标记

let buttonClicked = false; // 新增:标记按钮是否被点击

修正按钮点击事件

playAs1996Cast.addEventListener('click', () => {
    document.getElementById("buttonp").innerHTML = "Continue";
    console.log("The 'Play As 1996 Cast' button has been clicked.");
    buttonClicked = true; // 标记按钮已点击
    detectGamePlay();
});

修正endGame()函数

function endGame() {
    gameStarted = false;
    episodecount = 0;
    document.getElementById("objecttext").innerHTML = killer;
    killerRevealed = true; // 标记杀手已揭晓
    console.log("End Game:" + killer);  

    // 满足条件则重载游戏
    if (killerRevealed && buttonClicked) {
        location.reload();
    }
}

修正其他逻辑错误

  1. playEpisode()中的角色数量判断:
// 错误写法
if (castMembers < 4) {
    endGame();
}

// 正确写法
if (castMembers.length < 4) {
    endGame();
}
  1. openingScene()和playEpisode()的for循环:
// 错误写法
for (let i = 0; i < castMembers; i++)

// 正确写法
for (let i = 0; i < castMembers.length; i++)
  1. openingScene()中的条件判断:
// 错误写法
if (lowestPlayer.totalStats=0){
    playEpisode()
}

// 正确写法(根据逻辑调整,示例为判断最低分是否为0)
if (lowestPlayer === 0){
    playEpisode()
}

内容的提问来源于stack exchange,提问作者Yosuf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 22:47:02