简体   繁体   English

刽子手游戏中的增量字母

[英]Increment letters in a hangman game

I need to add the letters H,A,N,G,M,A,N one at a time if a user guesses the word wrong如果用户猜错了,我需要一次添加一个字母 H,A,N,G,M,A,N

I have tried using a loop but am unsure how to do it我曾尝试使用循环,但不确定如何操作

function playgame(yourword) {

    //yourword array
    /*********************/
    let word = yourword.toUpperCase();
    let letters = word.split("");
    var answerArray = [letters[0]];
    for (var i = 1; i < letters.length; i++) {
        answerArray[i] = "_";
    }
    let answer = answerArray.join();

    //hangman array
    /*********************/
    let hgm = ["H", "A", "N", "G", "M", "A", "N"];
    let hgArray = [hgm[0]];
    for (var i = 1; i < hgm.length; i++) {
        hgArray[i] = "_";
    }
    //loop
    let remainingLetters = word.length;
    let remainingLetter = hgm.length;
    while (remainingLetters > 0 & remainingLetter > 0) {

        //show the array
        console.log(answerArray.join(" ").toUpperCase());
        console.log(hgArray.join(",").toUpperCase());

        let guess = prompt("guess a letter").toUpperCase();
        //add a letter if guessed correctly
        for (var i = 0; i < letters.length; i++) {
            if (word[i] === guess) {
                answerArray[i] = guess;
                remainingLetters--;
            }
            //add a letter to the hangman string if guessed incorrecty 
            //MY PROBLEM IS HERE

            for (var h = 0; h < hgm.length; h++) {
                if (word[h] !== guess) {
                    remainingLetter--;
                }

                //TO HERE

            }

        }
        console.log(answerArray.join(" ").toUpperCase());
        console.log(hgArray.join(",").toUpperCase());
        if (remainingLetters === 0) {
            console.log("you win");
        } else if (remainingLetters !== 0) {
            console.log("you lose");
        }
    }
}

I have tried using a loop the same way I did to increment the next letter but I was not sure how to go about doing it.我曾尝试以与增加下一个字母相同的方式使用循环,但我不确定如何去做。

Please help out请帮忙

You do not need a loop since you only want to insert a letter at the current position.您不需要循环,因为您只想在当前位置插入一个字母。

function playgame(yourword) {

    //yourword array
    /*********************/
    let word = yourword.toUpperCase();
    let letters = word.split("");
    var answerArray = [letters[0]];
    for (var i = 1; i < letters.length; i++) {
        answerArray[i] = "_";
    }
    let answer = answerArray.join();

    //hangman array
    /*********************/
    let hgm = ["H", "A", "N", "G", "M", "A", "N"];
    let hgArray = [hgm[0]];
    for (var i = 1; i < hgm.length; i++) {
        hgArray[i] = "_";
    }
    //loop
    let remainingLetters = word.length - 1;
    let remainingLetter = hgm.length;
    let currentHangmanPosition = 1;
    while (remainingLetters > 0 & remainingLetter > 0) {

        //show the array
        console.log(answerArray.join(" ").toUpperCase());
        console.log(hgArray.join(",").toUpperCase());

        let guess = prompt("guess a letter").toUpperCase();
        //add a letter if guessed correctly

        if (letters[word.length - remainingLetters] == guess) {
          answerArray[word.length - remainingLetters] = guess;
          remainingLetters--;
        }else{
          hgArray[currentHangmanPosition] = hgm[currentHangmanPosition];
          currentHangmanPosition++;
        }


        console.log(answerArray.join(" ").toUpperCase());
        console.log(hgArray.join(",").toUpperCase());
        if (remainingLetters === 0) {
            console.log("you win");
        } else if (currentHangmanPosition == hgm.length) {
            console.log("you lose");
        }
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM