Oi gente! Eu gostaria de uma ajudinha em um bug que estou enfrentando no código de um joguinho simples que eu fiz baseado no seguinte vídeo (o exercício foi proposto pela faculdade): https://www.youtube.com/watch?v=r9buAwVBDhA&ab_channel=ManualdoDev
Eu estou tentando criar um sistema de pontuação. O problema é que quando o Mario consegue desviar do cano, a pontuação, que deveria ser atualizada para +1, é atualizada para valores vareados, mas maiores do que 1, como eu especifiquei no código.

Link do repositório: https://github.com/kellysondias/mario-jump
Este é o script.js:
const mario = document.querySelector(".mario");
const pipe = document.querySelector(".pipe");
const score = document.querySelector(".score");
console.log(score);
const jump = () => {
  const add = () => mario.classList.add("mario-jump");
  const remove = () => mario.classList.remove("mario-jump");
  const timeOut = 500;
  add();
  setTimeout(() => remove(), timeOut);
};
const interval = 10;
let points = 0;
const updateScore = () => (score.innerText = `Score: ${points}`);
updateScore();
const gameLoop = () => {
  const pipePosition = pipe.offsetLeft;
  const marioPosition = Number(
    window.getComputedStyle(mario).bottom.replace("px", "")
  );
  const pipeCrash = 120;
  const marioCrash = 80;
  const scored = pipePosition <= pipeCrash && marioPosition > marioCrash;
  const gameOver =
    pipePosition <= pipeCrash && pipePosition > 0 && marioPosition < marioCrash;
  if (gameOver) {
    pipe.style.animation = "none";
    pipe.style.left = `${pipePosition}px`;
    mario.style.animation = "none";
    mario.style.bottom = `${marioPosition}px`;
    mario.src = "./img/game-over.png";
    mario.style.width = "75px";
    mario.style.marginLeft = "50px";
    clearInterval(loop);
  } else if (scored) {
    points++;
  }
  updateScore();
};
const loop = setInterval(gameLoop, interval);
document.addEventListener("keydown", jump);
Este é o index.html:
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="shortcut icon" href="./img/favicon.png" type="image/x-icon" />
    <link rel="stylesheet" href="./css/style.css" />
    <title>Mario Jump</title>
  </head>
  <body>
    <div class="game-board">
      <p class="score"></p>
      <img src="./img/clouds.png" alt="Clouds" class="clouds" />
      <img src="./img/mario.gif" alt="Mario" class="mario" />
      <img src="./img/pipe.png" alt="Pipe" class="pipe" />
    </div>
    <script src="js/script.js" type="text/javascript"></script>
  </body>
</html>
Este é o index.css:
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
.game-board {
  width: 100%;
  height: 500px;
  border-bottom: 15px solid rgb(35, 160, 35);
  margin: 0 auto;
  position: relative;
  overflow: hidden;
  background: linear-gradient(#87ceeb, #e0f6ff);
}
.clouds {
  position: absolute;
  width: 350px;
  top: 15px;
  animation: clouds-animation 20s infinite linear;
}
.mario {
  width: 150px;
  position: absolute;
  bottom: 0;
}
.mario-jump {
  animation: jump 500ms ease-out;
}
.pipe {
  position: absolute;
  bottom: 0;
  width: 80px;
  animation: pipe-animation 2s infinite linear;
}
@keyframes clouds-animation {
  from {
    right: -350px;
  }
  to {
    right: 100%;
  }
}
@keyframes pipe-animation {
  from {
    right: -80px;
  }
  to {
    right: 100%;
  }
}
@keyframes jump {
  from {
    bottom: 0;
  }
  40% {
    bottom: 180px;
  }
  50% {
    bottom: 180px;
  }
  60% {
    bottom: 180px;
  }
  70% {
    bottom: 180px;
  }
  to {
    bottom: 0;
  }
}
 
             
            