首页 > 解决方案 > 移动计数器显示结果比预期少一个

问题描述

我正在开发一个记忆游戏,我实现了一个移动计数器来计算完成游戏的尝试次数(移动)。但我得到的结果比预期的少一个。(即,如果预期是 9 ,我得到 8 )。帮帮我 。

var matches = 0;
var moves = 0;
var counter = document.querySelector(".moves");

计算移动的功能:

function moveCounter(){
++moves;
//counter.innerHTML = moves;
}

在记忆游戏上进行第二次点击时进行计数,并将其计为第一步。

for (i = 0; i < buttons.length; i++)
{
buttons[i].addEventListener('click', function (e) {
var turnable = e.target.dataset.turnable;


//first click
if (!wait && lastKnownButtonId == undefined && lastKnownButtonNumber == undefined && turnable == 'true') {
  e.target.dataset.turnable = 'false';

  e.target.innerHTML = getgImage(event.target.dataset.number);
  e.target.style.backgroundColor = 'yellow';

  lastKnownButtonId = e.target.id;
  lastKnownButtonNumber = e.target.dataset.number;
 }

//second click
else if (!wait && lastKnownButtonId != undefined && lastKnownButtonNumber != undefined && turnable == 'true' && e.target.id != lastKnownButtonId) {
  e.target.dataset.turnable = 'false';

  e.target.innerHTML = getgImage(event.target.dataset.number);




  //match
  if (e.target.dataset.number == lastKnownButtonNumber) {
    e.target.style.backgroundColor = '#00FF7F';
    document.getElementById(lastKnownButtonId).style.backgroundColor = '#00FF7F';

    lastKnownButtonId = undefined;
    lastKnownButtonNumber = undefined;

    matches++;


    if (matches == 8) {

    showWinScreen();

    document.getElementById("finalMove").innerHTML = moves;


    }

  }

  //no match
  else {
    document.getElementById(lastKnownButtonId).style.backgroundColor = 'red';
    e.target.style.backgroundColor = 'red';
    wait = true;

    setTimeout(() => {
      e.target.dataset.turnable = 'true';
      e.target.style.backgroundColor = 'white'
      e.target.innerHTML = getgImage(0);


      var tempLastClickedButton = document.getElementById(lastKnownButtonId);

      tempLastClickedButton.dataset.turnable = 'true';
      tempLastClickedButton.style.backgroundColor = 'white';
      tempLastClickedButton.innerHTML = getgImage(0);

      lastKnownButtonId = undefined;
      lastKnownButtonNumber = undefined;
      wait = false;
    }, 1000);


  }
  moveCounter();
}

});
}

游戏结束时,应显示动作

if (matches == 8) {

    showWinScreen();

    document.getElementById("finalMove").innerHTML = moves;
    }

假设“我期望移动的输出 = 12,但我得到的输出 = 11”

标签: javascripthtml

解决方案


推荐阅读