满足赢/输条件后,游戏不会重置

时间:2019-06-09 18:50:14

标签: javascript jquery

我正在制作一个onclick游戏,它会随机生成一个要到达的数字,并为每个要单击的对象随机生成一个数字。我能够使一切正常工作,但无法重置游戏。

我尝试了多种不同的功能,并将其移动并嵌套。我是新来的,所以我觉得我的功能很弱,需要更多的工作。

function startgame(){

  let randomNumer = 50 + Math.floor(Math.random() * 500);
  console.log(randomNumer);

  let crystalOne = 5 + Math.floor(Math.random() * 20);
  console.log(crystalOne);

  let crystalTwo = 8 + Math.floor(Math.random() * 12);
  console.log(crystalTwo);

  let crystalThree = 1 + Math.floor(Math.random() * 22);
  console.log(crystalThree);

  let crystalFour = 20 + Math.floor(Math.random() * 50);
  console.log(crystalFour);

  let wins = 0;
  let losses = 0;
  let score = 0;
  let counter = 0;



  $(".randomnumber").text(randomNumer);


  $("#crystalone").on("click", function () {
    counter + crystalOne;
    $(".score").text(counter += crystalOne);
    $("#firstcrystal").text(crystalOne);
    checker();
  });
  $("#crystaltwo").on("click", function () {
    counter + crystalTwo;
    $(".score").text(counter += crystalTwo);
    $("#secondcrystal").text(crystalTwo);
    checker();
  });
  $("#crystalthree").on("click", function () {
    counter + crystalThree;
    $(".score").text(counter += crystalThree);
    $("#thirdcrystal").text(crystalThree);
    checker();
  });
  $("#crystalfour").on("click", function () {
    counter + crystalFour;
    $(".score").text(counter += crystalFour);
    $("#fourthcrystal").text(crystalFour);
    checker();
  });
  function checker() {

    if (counter > randomNumer) {
        losses++;
        $("#losses").append(losses);
        reset();
        // startgame();
    }


    if (counter === randomNumer) {
        wins++;
        $("#wins").append(wins);
        reset();
        // startgame();
    }

  };

};


startgame();


function reset() {

    let randomNumer = 1 + Math.floor(Math.random() * 500);
    console.log(randomNumer);

    let crystalOne = 5 + Math.floor(Math.random() * 20);
    console.log(crystalOne);

    let crystalTwo = 8 + Math.floor(Math.random() * 12);
    console.log(crystalTwo);

    let crystalThree = 1 + Math.floor(Math.random() * 22);
    console.log(crystalThree);

    let crystalFour = 20 + Math.floor(Math.random() * 50);
    console.log(crystalFour);


    $(".randomnumber").on("click").text(randomNumer);
    startgame();

};

游戏有效,并记录了获胜和失败,但不会重置。

1 个答案:

答案 0 :(得分:1)

reset中的变量没有任何作用,因为它们是重置功能的局部变量,在startgame中不可见

此外,randomNumerreset中不可见。

添加到startgame

$(".score").text('0');

此外,您还可以完全删除reset函数,因为它除了调用startgame之外没有任何其他作用,而是在您调用reset之前的checker中调用startgame。