我的目標是停止打印出之前使用過的密鑰,並在顯示所有字母(遊戲結果)時停止遊戲。JavaScript停止鍵被再次使用
解決:對於那些誰有同樣的問題:添加此功能將 做的工作:
//check if key is used function checkKey(charStr) { if (keyStore.includes(charStr)) { return false; } else { //record pressed key keyStore.push(charStr); if (nameChosen.toLowerCase().includes(charStr)) { display(charStr); } else { attempt--; //print out wrong-guess key document.getElementById("wrongGuess").innerHTML = document.getElementById("wrongGuess").innerHTML + charStr + " "; } } }
,並把功能按鍵事件裏面。
這裏是我的老代碼:
var names = ["Adam Red", "Bob Green", "Chris Blue"];
var nameChosen = names[Math.floor(Math.random() * names.length)];
var nameSplit = nameChosen.split("");
var updated = [];
var attempt = nameChosen.length - 2;
function display(char) {
//replace each of the letters with underscore and space with dash
char = char || "_"; // set to default when no char given
var nameDisplayed = [];
for (var i = 0; i < nameSplit.length; i++) {
if (updated[i] || (char.toLowerCase() === nameSplit[i].toLowerCase())) {
nameDisplayed += nameSplit[i] + " ";
updated[i] = true;
}
else if (nameSplit[i] == " ") {
nameDisplayed += "- ";
}
else {
nameDisplayed += "_ ";
}
}
document.getElementById("nameDisplay").innerHTML = nameDisplayed;
}
// need function for game won <===============
function gameLost() {
document.getElementById("container").style.backgroundColor = "red";
document.getElementById("notice").innerHTML = "SORRY, YOU'VE LOST THE GAME!";
document.getElementById("notice").style.fontWeight = "bold";
document.getElementById("notice").style.color = "white";
}
document.getElementById("attempt").innerHTML = attempt;
//get key pressed by user
document.addEventListener("keypress", function(evt) {
evt = evt || window.event;
var charCode = evt.keyCode || evt.which;
var charStr = String.fromCharCode(charCode);
console.log("key pressed: ", charStr);
if (nameChosen.toLowerCase().includes(charStr)) {
display(charStr);
}
else {
attempt--;
document.getElementById("wrongGuess").innerHTML = document.getElementById("wrongGuess").innerHTML + charStr + " ";
// print out key pressed continuously <==================
};
if (attempt == 0) {
gameLost();
};
document.getElementById("attempt").innerHTML = attempt;
});
display(); // call onload
我已經試過:添加新的變種,並將其設置真/假,並把在循環,創建一個新的功能,但仍無法使它發生了。
不要混淆與問題的答案。如果現有答案無法解決您的問題,請使用解決方案添加正確答案 –