我尝试使用for循环在数组中搜索字符串,遍历数组的每个点以获取其长度。如果字符串存在,它应该显示该字符串(在本例中是一个字母)。由于某些原因,即使该字母在那里,输出也不会更新。
例如,假设单词是狗。输出数组看起来像‘▢▢▢’。如果我猜到了'D',它应该将输出数组更新为'D▢▢‘。这里的问题是,它不是这样做的。
这是我与这部分相关的代码:
function encryptLetters() {
instructions.style.display = "none";
for (i = 0; i < magicyMagic.length; i++) {
if (magicyMagic.substring(i, i + 1) == " ") {
output[i] = "   ";
} else if (magicyMagic.substring(i, i + 1) == ".") {
output[i] = ".";
} else {
output[i] = " ▢"
}
}
document.getElementById("mysteryWord").innerHTML = output.join("");
firstTurn();
}
function player1() {
console.log("Player 1 is going.");
nowGoing = 1;
player1Elements.style.display = "block";
alert(playerName1 + " it is your turn. What do you guess?");
ask();
}
function ask() {
console.log("Prompting");
var guess = prompt("What letter would you like to guess?");
var playerGuess = guess.toUpperCase();
console.log(playerName1 + " guessed " + playerGuess);
checkGuessType(playerGuess);
}
function checkGuessType(playerGuess) {
console.log("Checking type...");
if (playerGuess.length > 1) {
console.log(playerName1 + " guessed a word.");
} else if (playerGuess == "A" || playerGuess == "E" || playerGuess == "I" || playerGuess == "O" || playerGuess == "U") {
console.log(playerName1 + " guessed a vowel.");
} else {
console.log(playerName1 + " guessed a consonant.");
}
checkForGuess(playerGuess);
}
function checkForGuess(playerGuess) {
console.log("Checking if letter is present...");
for (x = 0; x < magicyMagic.length; x++) {
if (playerGuess == magicyMagic.charAt(x)) {
console.log("Ding ding ding!");
lettersMatched = lettersMatched + 1;
isCorrect = true;
output[x] = playerGuess;
lettersMatched = 0;
}
}
if (isCorrect == false && playerGuess !== "") {
console.log("Player did not guess correctly...");
document.getElementById("pl1Messages").innerHTML = "There are no " + playerGuess + "'s in the word.";
lettersMatched = 0;
document.getElementById("lastMessage").innerHTML = "Player 2 (" + playerName2 + ") will now go.";
}
hasBeenGuessed.push(playerGuess);
console.log(hasBeenGuessed[0] + " has been added to the list. Players cannot guess this letter again.");
}在控制台中,我只看到以下内容:
"The first player's name is Test1."
"The second player's name is Test2."
"The player(s) have been informed."
"The word is UGANDA"
"Player 1 is going."
"Prompting"
"Test1 guessed A"
"Checking type..."
"Test1 guessed a vowel."
"Checking if letter is present..."
"Ding ding ding!"
"Ding ding ding!"
"A has been added to the list. Players cannot guess this letter again."尽管与该部分相关的console.log()语句出现在控制台中,但输出数组没有任何更新。我该怎么解决这个问题?
附注:任何在代码片段中看不到的变量都很可能是全局变量,我不确定这是否会改变什么。
编辑:这里是所有相关的变量-所有数组的值都是大写的,但它仍然不起作用。
var playerName1;
var playerName2;
var nowGoing = 0;
var magicyMagic;
var isCorrect = false;
// ____ Trees (types of trees - 1)
var array1Trees = ["OAK", "ELM", "PINE", "BIRCH", "SPRUCE", "ASPEN", "MAPLE", "CEDAR", "REDWOOD", "CHERRY"];
// ____ (drinks - 2)
var array2Drinks = ["COKE", "FANTA", "SPRITE", "DR. PEPPER", "CRUSH", "WATER", "PEPSI", "LEMONADE", "MILK", "MOUNTAIN DEW"];
// ____ Man (superheroes - 3)
var array3Heroes = ["SPIDERMAN", "AQUAMAN", "BATMAN", "IRONMAN", "SUPERMAN", "ANTMAN", "HEMAN"];
// ____ (games - 4)
var array4Games = ["POKEMON", "MINECRAFT", "TETRIS", "VALORANT", "CALL OF DUTY", "ROBLOX", "SUPER SMASH BROS", "ANIMAL CROSSING", "TERRARIA", "ANGRY BIRDS"];
// ____ (places - 5)
var array5Places = ["CANADA", "NEW YORK", "TEXAS", "GUATEMALA", "PUERTO RICO", "JAMAICA", "THAILAND", "RUSSIA", "HOFFMAN ESTATES", "UGANDA"];
var output = [];
var lettersMatched = 0;
var hasBeenGuessed = [];发布于 2020-12-07 23:13:25
字符串比较区分大小写。这意味着字母"E“不同于字母"e”。在您的代码中,您说被猜测的字母是元音,如果它等于"a“、"e”、"i“、"o”、"u",但是您没有检查"A“、"E”、"I“、"O”、"U“。
因此,当输入为"E“时,您会得到”测试1猜测了一个辅音“。
如果希望比较区分大小写,则应在检查中添加大写字母。如果您不关心是否区分大小写,可以在比较变量playerGuess之前对其应用函数toLowerCase()。
https://stackoverflow.com/questions/65183838
复制相似问题