Javascript 如何在不重置分数的情况下重置刽子手游戏?

Javascript 如何在不重置分数的情况下重置刽子手游戏?,javascript,Javascript,我正在做这个刽子手游戏,我很难让输赢计数器正常工作 看来我的损失计数器工作,但猜测的数量将进入负面。它会将游戏视为失败,但不会重置它 当我设置win count时,它统计每个用户的点击次数,而不是整个单词。到目前为止,我尝试的所有游戏都失败了 当有人输了或赢了之后,如何在保持分数的同时重新设置游戏 function getItem() { var array = [ { answer: "harvey", hint: "Thank you Harvey,

我正在做这个刽子手游戏,我很难让输赢计数器正常工作

看来我的损失计数器工作,但猜测的数量将进入负面。它会将游戏视为失败,但不会重置它

当我设置win count时,它统计每个用户的点击次数,而不是整个单词。到目前为止,我尝试的所有游戏都失败了

当有人输了或赢了之后,如何在保持分数的同时重新设置游戏

function getItem() {
var array = [
    {
        answer: "harvey",
        hint: "Thank you Harvey, I prefer you too."
    },

    {
        answer: "titanic",
        hint: "Jack, I’m flying!"
    },

    {
        answer: "jaws",
        hint: "You’re Gonna Need A Bigger Boat…"
    },

    {
        answer: "rocky",
        hint: "ADRIAAAAAAAAAAAN!!!!!!!!"
    },

    {
        answer: "casablanca",
        hint: "We'll always have Paris."
    },

    {
        answer: "braveheart",
        hint: "They may take away our lives, but they'll never take our freedom!"
    },

    {
        answer: "goodfellas",
        hint: "As far back as I can remember, I always wanted to be a gangster."
    },

    {
        answer: "diehard",
        hint: "Nine million terrorists in the world and I gotta kill one with feet smaller than my sister."
    },

    {
        answer: "chinatown",
        hint: "Forget it, Jake, it's Chinatown."
    },

    {
        answer: "psycho",
        hint: "A boy's best friend is his mother.",
    }

]


var randomNumber = Math.floor(Math.random() * array.length);
return array[randomNumber];



  };


var randomThing = getItem()
document.getElementById("hint-text").innerHTML = ("Here is your 
hint.... " + randomThing.hint.italics());

var blankSpacesAnswer = [];
var blanksAndSuccesses = document.getElementById("blankspaces-text");
for (var i = 0; i < randomThing.answer.length; i++) {
blankSpacesAnswer[i] = "_";
console.log(blankSpacesAnswer);
blanksAndSuccesses.innerHTML = ("Your word: " + 
blankSpacesAnswer.join(" "));
};

var currentWord;
var guessingWord = [];
var winCounter = 0;
var lossCounter = 0;
var numGuesses = 12;
var letterGuessed = "";
var wrongGuesses = [];
var remainingLetters = randomThing.answer.length;

document.onkeyup = function (event) {
var userGuess = event.key;
console.log(userGuess);
var answerLetterArray = randomThing.answer.split("");
guessingWord.length = answerLetterArray.length;
console.log(answerLetterArray);

if (remainingLetters > 0) {
    var guessesEl = document.getElementById("blankspaces-text")
    guessesEl.innerHTML = blankSpacesAnswer.join(" ")

    var notFound = false;
    for (var i = 0; i < answerLetterArray.length; i++) {
        console.log(answerLetterArray[i]);

        if (userGuess === answerLetterArray[i]) {
            blankSpacesAnswer[i] = userGuess
        }

        else if (answerLetterArray[i] !== userGuess) {
            notFound = true;
        }

        blanksAndSuccesses.innerHTML = ("Your word:   " + 
   blankSpacesAnswer.join(" "));
        document.getElementById("usser-guesses-text").innerHTML = 
    ("Your guesses: " + userGuess);
        document.getElementById("wins-text").textContent = ("Wins: " + 
   winCounter);
    }

    if (notFound === true) {
        numGuesses--;
    }
    if (numGuesses === 0)
        lossCounter++;
   }


   document.getElementById("guesses-left").textContent = ("Number of 
   guesses: " + numGuesses);
   document.getElementById("losses-text").textContent = ("Losses: " + 
   lossCounter);

   };

你的麻烦的根本原因似乎是游戏刚刚开始,没有真正的概念设置它,赢得它或失去它

因此,当您跟踪猜测的状态时,您并不是在跟踪游戏本身的状态

我建议将代码分成几个部分:

安装程序 初始化 运行/循环 游戏结束 设置阶段应设置用户界面、密钥处理程序等

初始化开始游戏选择一个随机单词,设置你想要的猜测次数,等等

运行/循环将只等待您的输入并跟踪游戏状态。如果出现赢或输的情况,则应相应结束游戏

当游戏结束时,您可以通过返回初始化阶段来重置/重新启动游戏

如果您将代码放入函数setup、initialize、run和win/lose中,您可以在需要切换游戏状态时调用这些函数


更新:

您是否调试了代码?展示你的研究成果。我在这里创建了一个代码沙盒,其中包含一些我认为存在的html代码:哇。。。。非常感谢。你解释得很清楚。我理解你将代码分成不同部分的意思,例如has、setup/run/win/lose。您可以将其分解为需要在函数中一起运行的代码片段,以便以后可以调用这些函数。在我的代码中,我在onkeyup函数下一次运行了它。这是非常有用的!