为了账号安全,请及时绑定邮箱和手机立即绑定

Hangman 游戏图像仅限 JavaScript

Hangman 游戏图像仅限 JavaScript

浮云间 2022-12-29 10:31:55
每次玩家未能猜出字母时,我该如何实现这些图像?我应该把它放在哪里?当玩家猜不到1个字母时,会显示刽子手1,然后是刽子手2,然后是刽子手3等等?这是我的代码。图像在 console.log 中 /* hangman 1 console.log(" _|_\n|   |_____\n|         |\n|_________|"); hangman 2 console.log("   _____\n  |     |\n  |\n  |\n _|_\n|   |_____\n|         |\n|_________|\n"); hangman 3 console.log("   _____\n  |     |\n  |     o\n  |     | \n _|_    \ \n|   |_____\n|         |\n|_________|\n"); hangman 4 console.log("   _____\n  |     |\n  |     o\n  |    /|\\ \n _|_    \ \n|   |_____\n|         |\n|_________|\n"); hangman 5 console.log("   _____\n  |     |\n  |     o\n  |    /|\\ \n _|_   / \\ \n|   |_____\n|         |\n|_________|\n");*/// Show player their progress | .join returned answer as a stringwhil (remainingLetters > 0 && lives > 0) {    (answerArray.join(""));    guess = readline.question(name + "'s guess (Enter 9 for lifelines or 0 to pass): ");    guess = guess.toUpperCase();    //if guess is more than 1 letter or no letter, alert player to guess 1 letter only    if (guess.length !== 1) {      console.log("Please enter 1 letter only.");    }    //if valid guess    else {      if (guesses.includes(guess)) {        console.log("\nYou have already made this guess, please try another letter!\n");      } else {        guesses.push(guess);        correctGuess = 0;        for (var j = 0; j < Word.length; j++) {          if (Word[j] == guess) {            answerArray[j] = guess;            remainingLetters--;            correctGuess = 1;          }        }       
查看完整描述

2 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

我的建议是将您的各种图形存储在一个数组中,并存储当前图形的索引 - 从零开始。


每次用户得到错误答案时,您都会获取console.log当前索引,然后递增索引:


 console.log(graphicsArray[graphicsIndex++]);

下面有一个演示,使用按钮按下来模拟错误答案。试试看。


var graphicsArray = [];

graphicsArray.push(" _|_\n|   |_____\n|         |\n|_________|");

graphicsArray.push("   _____\n  |     |\n  |\n  |\n _|_\n|   |_____\n|         |\n|_________|\n");

graphicsArray.push("   _____\n  |     |\n  |     o\n  |     | \n _|_    \ \n|   |_____\n|         |\n|_________|\n");

graphicsArray.push("   _____\n  |     |\n  |     o\n  |    /|\\ \n _|_    \ \n|   |_____\n|         |\n|_________|\n");

graphicsArray.push("   _____\n  |     |\n  |     o\n  |    /|\\ \n _|_   / \\ \n|   |_____\n|         |\n|_________|\n");



var graphicsIndex = 0;


document.querySelector("#demo").onclick = () => {

    console.log(graphicsArray[graphicsIndex++]);

}

<button id="demo">press me</button>


您将在减少生命数量的代码部分执行此操作。


// ... //

if (correctGuess == 1) {

   console.log("\nGood job! " + guess + " is one of the letters!\n");

   console.log(JSON.stringify(answerArray) + "\n");

   console.log(JSON.stringify(alphabets) + "\n");

} else {

   lives -= 1;

   console.log("\nSorry. " + guess + " is not a part of the word.\n");

   console.log(JSON.stringify(answerArray) + "\n");

   console.log(JSON.stringify(alphabets) + "\n");

   console.log("You have " + lives + " lives remaining.\n");

   console.log(graphicsArray[graphicsIndex++]);

}

// ... //


查看完整回答
反对 回复 2022-12-29
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

使用发电机!

要更好地了解什么是生成器,您可以访问此处:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function*


/* This function generates your images */

function* hangmanGenerator() {

    yield console.log(" _|_\n|   |_____\n|         |\n|_________|");

    yield console.log("   _____\n  |     |\n  |\n  |\n _|_\n|   |_____\n|         |\n|_________|\n");

    yield console.log("   _____\n  |     |\n  |     o\n  |     | \n _|_    \ \n|   |_____\n|         |\n|_________|\n");

    yield console.log("   _____\n  |     |\n  |     o\n  |    /|\\ \n _|_    \ \n|   |_____\n|         |\n|_________|\n");

    yield console.log("   _____\n  |     |\n  |     o\n  |    /|\\ \n _|_   / \\ \n|   |_____\n|         |\n|_________|\n");

}


/* This is the istance of your image generator */

const generator = hangmanGenerator();


/* This is how you get the images out of your generator */

generator.next().value  /* Hangman 1*/

generator.next().value  /* Hangman 2*/

generator.next().value  /* Hangman 3*/

generator.next().value  /* Hangman 4*/

generator.next().value  /* Hangman 5*/

generator.next().value  /* No value because you're out of yields -> game over */


您的代码应如下所示:


//Your code...

//The function definition can go wherever you want in your code as long as it's before the while loop

function* hangmanGenerator() {

    yield console.log(" _|_\n|   |_____\n|         |\n|_________|");

    yield console.log("   _____\n  |     |\n  |\n  |\n _|_\n|   |_____\n|         |\n|_________|\n");

    yield console.log("   _____\n  |     |\n  |     o\n  |     | \n _|_    \ \n|   |_____\n|         |\n|_________|\n");

    yield console.log("   _____\n  |     |\n  |     o\n  |    /|\\ \n _|_    \ \n|   |_____\n|         |\n|_________|\n");

    yield console.log("   _____\n  |     |\n  |     o\n  |    /|\\ \n _|_   / \\ \n|   |_____\n|         |\n|_________|\n");

}

//As the generator definition you can istanciate the generator object wherever you need 

//as long as it's visible in the while loop

const generator = hangmanGenerator();


// Show player their progress | .join returned answer as a string

while (remainingLetters > 0 && lives > 0) {

    (answerArray.join(""));


    guess = readline.question(name + "'s guess (Enter 9 for lifelines or 0 to pass): ");

    guess = guess.toUpperCase();


    //if guess is more than 1 letter or no letter, alert player to guess 1 letter only

    if (guess.length !== 1) {

      console.log("Please enter 1 letter only.");

    }


    //if valid guess

    else {

      if (guesses.includes(guess)) {

        console.log("\nYou have already made this guess, please try another letter!\n");

      } else {

        guesses.push(guess);

        correctGuess = 0;

        for (var j = 0; j < Word.length; j++) {

          if (Word[j] == guess) {

            answerArray[j] = guess;

            remainingLetters--;

            correctGuess = 1;

          }

        }


        if (correctGuess == 1) {

          console.log("\nGood job! " + guess + " is one of the letters!\n");

          console.log(JSON.stringify(answerArray) + "\n");

          console.log(JSON.stringify(alphabets) + "\n");

        } else {

          lives -= 1;

          console.log("\nSorry. " + guess + " is not a part of the word.\n");

          console.log(JSON.stringify(answerArray) + "\n");

          console.log(JSON.stringify(alphabets) + "\n");

          console.log("You have " + lives + " lives remaining.\n");

          //HERE you show the hangman in the console

          generator.next().value;

        }

      }

    }


    if (remainingLetters == 0) {

      console.log("Congratulation! You managed to guess the word!\n");

      break;

    }

    

    if (lives == 0) {

      console.log("Game Over... You failed to guess the word. The word is " + Word + ".\n")

    }


  }


查看完整回答
反对 回复 2022-12-29
  • 2 回答
  • 0 关注
  • 81 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信