2 回答
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++]);
}
// ... //
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")
}
}
添加回答
举报