使以前选择的单词消失在html上,并在javascript的Hangman游戏中替换新单词
Make previous selected word go away on html and replace with new word in Hangman game for javascript
我目前正在用javascript制作一个绞刑游戏,我正在努力如何删除和替换以前选择的单词,用一个新词。目前我的代码设置是,当玩家猜对单词时,就会弹出一条消息,询问用户是否想再玩一次。如果他们按下Y,我调用从数组中随机选择一个单词的函数,并使用push方法用与所选单词长度相同的空行填充和清空数组。但是当我在按下Y之后调用这个函数时,前面的单词不会消失,并且按键也不会注册。
var hangmanObject = {
randomWords: ['rock','paper','modular synthesizer', 'led zeppelin'],
chosenWord: "",
numWins: 0,
numLives: 10,
empty: [],
incorrect: [],
splitArray: []
}
function startFunction()
{
document.getElementById("numLives").innerHTML = hangmanObject.numLives;
displayChosenWord();
}
function displayChosenWord()
{
hangmanObject.chosenWord = hangmanObject.randomWords[Math.floor(Math.random()*hangmanObject.randomWords.length)]
hangmanObject.splitArray = hangmanObject.chosenWord.split("");
for (x = 0; x < hangmanObject.chosenWord.length; x++)
{
if (hangmanObject.chosenWord.charAt(x) === " ")
hangmanObject.empty.push(" ");
else
hangmanObject.empty.push(" _ ");
}
document.getElementById("blanks").innerHTML = hangmanObject.empty.join("");
}
document.onkeyup = function(event)
{
var userGuess = String.fromCharCode(event.keyCode).toLowerCase();
for (x = 0; x < hangmanObject.chosenWord.length; x++)
{
if (hangmanObject.chosenWord.charAt(x) === userGuess)
{
hangmanObject.empty[x] = userGuess;
document.getElementById("blanks").innerHTML = hangmanObject.empty.join("");
}
}
if (hangmanObject.splitArray.indexOf(userGuess) === -1) //checking to see if wrong letter chosen
{
hangmanObject.numLives--;
document.getElementById("numLives").innerHTML = hangmanObject.numLives;
hangmanObject.incorrect.push(userGuess);
document.getElementById("LettersGuessed").innerHTML = hangmanObject.incorrect;
}
console.log(hangmanObject.empty);
if (hangmanObject.empty.indexOf(" _ ") === -1)
{
hangmanObject.numWins++;
// console.log("i won");
document.getElementById("wins").innerHTML = hangmanObject.numWins;
document.getElementById("Play").innerHTML = "Play Again? Y/N";
document.onkeyup = function(event)
{
// Determines which exact key was selected. Make it lowercase
var Choice = String.fromCharCode(event.keyCode).toLowerCase();
if (Choice === 'y')
{
hangmanObject.numLives = 10;
displayChosenWord();
}
}
}
if (hangmanObject.numLives <= 0)
{
document.getElementById("lose").innerHTML = "You Lose";
}
}
您正在回调中设置document.onkeyup
回调,有效地禁用了字母猜测。
同样,empty
数组永远不会被清空,所以下一个单词被附加到前一个单词的空字母数组中。这里有一个更简单的方法,通过使用gameState
标志,你可以决定用户是输入字母进行猜测,还是决定再玩一次。此外,可以使用单个div表示status;)
var hangmanObject = {
gameState: 'playing',
randomWords: [
'rock',
'paper',
'modular synthesizer',
'led zeppelin'
],
chosenWord: "",
numWins: 0,
numLives: 10,
empty: [],
incorrect: [],
splitArray: []
}
function startFunction() {
document.getElementById("numLives").innerHTML = hangmanObject.numLives;
chooseNewWord();
}
function chooseNewWord() {
hangmanObject.chosenWord = hangmanObject.randomWords[Math.floor(Math.random() * hangmanObject.randomWords.length)]
hangmanObject.splitArray = hangmanObject.chosenWord.split("");
// Reset guesses and misses
hangmanObject.empty = [];
hangmanObject.incorrect = [];
for (x = 0; x < hangmanObject.chosenWord.length; x++) {
if (hangmanObject.chosenWord.charAt(x) === " ")
hangmanObject.empty.push(" ");
else
hangmanObject.empty.push("_");
}
document.getElementById("blanks").innerHTML = hangmanObject.empty.join(" ");
}
document.onkeyup = function(event) {
var userGuess = String.fromCharCode(event.keyCode).toLowerCase();
// Game status is "playing"
if (hangmanObject.gameState === 'playing') {
for (x = 0; x < hangmanObject.chosenWord.length; x++) {
if (hangmanObject.chosenWord.charAt(x) === userGuess) {
hangmanObject.empty[x] = userGuess;
document.getElementById("blanks").innerHTML = hangmanObject.empty.join(" ");
}
}
// checking to see if wrong letter chosen
if (hangmanObject.splitArray.indexOf(userGuess) === -1) {
hangmanObject.numLives--;
document.getElementById("numLives").innerHTML = hangmanObject.numLives;
hangmanObject.incorrect.push(userGuess);
document.getElementById("LettersGuessed").innerHTML = hangmanObject.incorrect.join(",");
}
// Some debug
console.log(hangmanObject.empty);
// WIN situation
if (hangmanObject.empty.indexOf("_") === -1) {
hangmanObject.numWins++;
// Set status message and game state
document.getElementById("status").innerHTML = "You won " + hangmanObject.numWins + " times";
hangmanObject.gameState = 'finished';
}
// LOSE situation
if (hangmanObject.numLives <= 0) {
// Set status message and game state
document.getElementById("status").innerHTML = "You Lose";
hangmanObject.gameState = 'finished';
}
// Set message if game finished
if (hangmanObject.gameState === 'finished') {
document.getElementById("Play").innerHTML = "Play Again? Y/N";
}
// Game status is "finished"
} else {
// If user selects play again
if (userGuess === 'y') {
// Set status back to "playing"
hangmanObject.gameState = 'playing';
// Reset lives and messages
hangmanObject.numLives = 10;
document.getElementById("status").innerHTML = "";
document.getElementById("LettersGuessed").innerHTML = "";
document.getElementById("Play").innerHTML = "";
// Choose new word
chooseNewWord();
} else {
// Set message
document.getElementById("status").innerHTML = "Goodbye!";
// Disable key handler
document.onkeyup = null;
}
}
}
startFunction();
<div id="numLives"></div>
<div id="blanks"></div>
<div id="LettersGuessed"></div>
<div id="status"></div>
<div id="Play"></div>
words joining -需要清除数组
no keyup -你用'y/n' keyup替换了它,你需要重置它。
在新游戏中也值得清除错误的字母和生命。
见下面的工作示例:-
var hangmanObject = {
randomWords: ['rock', 'paper', 'modular synthesizer', 'led zeppelin'],
chosenWord: "",
numWins: 0,
numLives: 10,
empty: [],
incorrect: [],
splitArray: []
}
function startFunction() {
document.getElementById("numLives").innerHTML = hangmanObject.numLives;
displayChosenWord();
}
function displayChosenWord() {
hangmanObject.empty = []; // empty the array
hangmanObject.incorrect = [];
hangmanObject.chosenWord = hangmanObject.randomWords[Math.floor(Math.random() * hangmanObject.randomWords.length)]
hangmanObject.splitArray = hangmanObject.chosenWord.split("");
for (x = 0; x < hangmanObject.chosenWord.length; x++) {
if (hangmanObject.chosenWord.charAt(x) === " ")
hangmanObject.empty.push(" ");
else
hangmanObject.empty.push(" _ ");
}
document.getElementById("blanks").innerHTML = hangmanObject.empty.join("");
document.getElementById("LettersGuessed").innerHTML = '';
document.getElementById("numLives").innerHTML = hangmanObject.numLives;
document.onkeyup = gameKeyUp;
}
function gameKeyUp(event) {
var userGuess = String.fromCharCode(event.keyCode).toLowerCase();
for (x = 0; x < hangmanObject.chosenWord.length; x++) {
if (hangmanObject.chosenWord.charAt(x) === userGuess) {
hangmanObject.empty[x] = userGuess;
document.getElementById("blanks").innerHTML = hangmanObject.empty.join("");
}
}
if (hangmanObject.splitArray.indexOf(userGuess) === -1) //checking to see if wrong letter chosen
{
hangmanObject.numLives--;
document.getElementById("numLives").innerHTML = hangmanObject.numLives;
hangmanObject.incorrect.push(userGuess);
document.getElementById("LettersGuessed").innerHTML = hangmanObject.incorrect;
}
console.log(hangmanObject.empty);
if (hangmanObject.empty.indexOf(" _ ") === -1) {
hangmanObject.numWins++;
// console.log("i won");
document.getElementById("wins").innerHTML = hangmanObject.numWins;
document.getElementById("Play").innerHTML = "Play Again? Y/N";
document.onkeyup = function(event) {
// Determines which exact key was selected. Make it lowercase
var Choice = String.fromCharCode(event.keyCode).toLowerCase();
if (Choice === 'y') {
hangmanObject.numLives = 10;
displayChosenWord();
}
}
}
if (hangmanObject.numLives <= 0) {
document.getElementById("lose").innerHTML = "You Lose";
}
}
displayChosenWord();
document.onkeyup = gameKeyUp;
<div id="numLives"></div>
<div id="blanks"></div>
<div id="LettersGuessed"></div>
<div id="wins"></div>
<div id="Play"></div>
<div id="lose"></div>
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 使用php或javascript从facebook相册URL中删除多余的部分
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在JavaScript中将字符串转换为函数引用
- 模糊事件的Javascript测试
- Javascript更改图标
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 如何使用WCF服务和javascript表单post上传.doc文件
- javascript结合了数组和字典
- 这是什么 ==- javascript 运算符
- 从javascript创建一个列表
- 无法在通过jQuery的ajax加载的页面中执行javascript
- Javascript Hangman游戏如何保存用户输入的单词
- 使以前选择的单词消失在html上,并在javascript的Hangman游戏中替换新单词
- Hangman Javascript -我的代码似乎没有更新的单词占位符,当一个字母猜对了
- Javascript Hangman,字母不显示,显示数字
- 如何跳过'if'语句,如果一个值不会改变Hangman Javascript
- 创建新对象时,Hangman-Timer 速度增加 (JavaScript)