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

JavaScript猜狗游戏if语句逻辑修复技术求助

修复猜狗游戏的JavaScript逻辑问题

修复后的完整代码

var allDogs = getColumn("Dogs", "Name");
var allDogsPicturesList = getColumn("Dogs", "Image");
var questionNumber = 0; // 初始化题目计数
var correctDog;
var userChoice;
var score = 0; // 初始化分数
setScreen("startScreen");

// 开始按钮点击事件
onEvent("readyButton", "click", function() {
  setScreen("quizScreen");
  generateNewQuestion(); // 单独拆分生成题目的函数,逻辑更清晰
});

// 图片点击事件:每个按钮对应自己的图片URL
onEvent("dog1", "click", function() {
  checkAnswer(getImageURL("dog1"));
});
onEvent("dog2", "click", function() {
  checkAnswer(getImageURL("dog2"));
});
onEvent("dog3", "click", function() {
  checkAnswer(getImageURL("dog3"));
});
onEvent("dog4", "click", function() {
  checkAnswer(getImageURL("dog4"));
});

// 生成新题目函数
function generateNewQuestion() {
  // 随机选一个正确的狗的索引
  var correctDogIndex = randomNumber(0, allDogs.length - 1);
  correctDog = allDogsPicturesList[correctDogIndex];
  // 设置问题文本
  setText("dogBeingGuessed", "Which dog is a \n" + allDogs[correctDogIndex]);
  
  // 随机选一个位置放正确图片
  var correctPosition = randomNumber(1, 4);
  setProperty("dog" + correctPosition, "image", correctDog);
  
  // 给其他三个位置设置不重复的错误图片
  for (var i = 1; i <= 4; i++) {
    if (i !== correctPosition) {
      var wrongImage;
      // 确保错误图片不等于正确图片
      do {
        var wrongIndex = randomNumber(0, allDogsPicturesList.length - 1);
        wrongImage = allDogsPicturesList[wrongIndex];
      } while (wrongImage === correctDog);
      setProperty("dog" + i, "image", wrongImage);
    }
  }
}

// 检查答案并处理得分、生成新题目
function checkAnswer(selectedImage) {
  // 判断是否答对
  if (selectedImage === correctDog) {
    score++;
  } else {
    score--;
  }
  
  questionNumber++;
  // 达到10题切换结束界面
  if (questionNumber === 10) {
    setScreen("screen1");
    // 可添加显示最终分数的逻辑,比如 setText("scoreText", "Final Score: " + score);
  } else {
    // 生成下一题
    generateNewQuestion();
  }
}

核心修复点

  • 点击事件修正:原代码所有图片点击后都错误取dog1的URL,现在每个按钮对应自身的图片URL,确保用户选择的是点击的目标图片
  • 变量初始化:给questionNumber和score设置初始值0,避免出现NaN的计算错误
  • 函数职责拆分:把生成题目和检查答案拆成两个独立函数,避免原函数逻辑混乱
  • 条件逻辑修正:
    1. 移除原代码中把字符串"dog1"和狗名、索引错误对比的逻辑,改为随机分配正确图片的位置
    2. 正确答案判断改为对比用户选择的图片URL和正确图片URL,逻辑准确
  • 错误图片去重:添加do-while循环,确保错误图片不会和正确图片重复
  • 无效循环移除:删掉原函数中重复执行11次的for循环,符合每次点击生成一题的需求
  • 流程逻辑理顺:首次进入游戏只生成题目,用户点击后再检查得分、计数,之后生成下一题或切换结束界面

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 03:17:13