如何在JS中制作刽子手游戏
How to make a Hangman game in JS
我正在尝试用JS制作一个刽子手游戏。我有以下功能在工作。计算机显示我的数组中的随机单词。我将按下的键打印到屏幕上,并在它们松开之前给用户 10 次击键。我遇到的问题是让数组显示在 var possibleWord 部分中,以便它显示为空格或破折号。提前感谢您的帮助。
//Computer picks random word to guess
function getItem() {
//Possible words to guess
var words = ['jason', 'kaitlyn', 'lora', 'matthew'];
document.getElementById("wordGuess").innerHTML = words[Math.floor(Math.random() * words.length)];
//Displays possible words blank spaces
var possibleWord = "J A S O N";
var blankSpaces = "";
var wordLength = possibleWord.length;
for (i = 0; i < wordLength; i++) {
var x = possibleWord.charAt(i);
if (x === " " || x === "/'") {
blankSpaces += x;
} else {
blankSpaces += "_";
}
}
document.getElementById("blankSpaces").innerHTML = blankSpaces;
}
//This code captures the keypress and prints it out on the screen
var guessesLeft = 9;
document.onkeypress = function(keyPressed) {
var keyPressed = keyPressed || window.event,
charCode = keyPressed.keyCode || keyPressed.which,
lettersGuessed = String.fromCharCode(charCode);
// var userGuess = prompt("What word do you guess?");
// var userGuess = words.split('');
// var userGuess
// if (words.indexOf(userGuess) > -1) {
// alert("Your guess is correct.")
// }else {
// alert("Your guess is wrong.")
// }
document.getElementById("lettersGuessed").innerHTML += lettersGuessed;
document.getElementById("guessesLeft").innerHTML = guessesLeft;
guessesLeft--;
if (guessesLeft === -1) {
alert("You Loose!");
}
}
<body onload="getItem()">
<div class="wrapper">
<div class="container">
Press any key to get started!
<br>
<br>Wins: # of times user guessed the word correctly
<br>
<br>Display random word from Array: <strong><u><span id="wordGuess"></span></u></strong>
<br>
<br>as the user guesses the correct letter, make the word display like this: <span id="blankSpaces"></span>
<br>
<br>Number of Guesses Remaining: <span id="guessesLeft">10</span>
<br>
<br>Letters Already Guessed: <span id="lettersGuessed"></span>
<br>
<br>
</div>
</div>
</body>
这是实现它的众多方法之一。
-首先,测量随机单词的length
。
-然后创建显示玩家进度的数组,其中包含length
破折号或空格的数量,如下所示:
var progressWord = []
for (var i = 0; i < wordLength; i ++)
progressWord.push('-');
-在输入时,检查是否可以在chosenWord
中找到键字符串(从键码转换后),使用 indexOf()
。如果存在,请替换以下项:
if (chosenWord.indexOf(keyString) != -1){ // if the character is found
for (var i = 0; i < wordLength; i ++){ // loop on all characters
if (chosenWord[i] == keyString) // if this is an occurance
progressWord[i] = chosenWord[i];
}
}else{
// wrong choice
}
-检查玩家是赢了还是输了。
if (progressWord.indexOf('-') == -1 ){ // if there are no dashes left
//win!
}else if (guessesLeft <= 0){
//player has lost
}
- 使用"join()"方法加入progressArray
并将其显示在屏幕上。
progressWord.join(" "); // will form a string from the array, with a space as as delimeter
您始终可以在浏览器的控制台上进行测试。祝你好运!
在不进入良好的 JavaScript(特别是污染全局名称空间)的情况下,只需回答您的直接问题,请查看此 JS 小提琴,以根据数组中的单词显示下划线。
var possibleWord = words[Math.floor(Math.random() * words.length)];
document.getElementById("wordGuess").innerHTML = possibleWord;
//Space out possibleWord
var originalLength = possibleWord.length;
for (i = 0; i < originalLength; i++) {
possibleWord = [possibleWord.slice(0, i*2+1), ' ', possibleWord.slice(i*2+1)].join('');
}
至少我已经把它包裹在 IIFE 中
相关文章:
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 如何有效地将游戏数据存储在URL查询字符串中
- Javascript游戏输入失去焦点
- 如何在p5.js中管理多智力竞赛游戏的多个屏幕
- setInterval游戏循环的范围问题
- 为网络游戏制作动画
- 重置游戏和获胜者问题
- 帆布游戏的滞后运动
- Javascript单独的游戏窗口
- Javascript猜测游戏-计数器不工作
- JavaScript纸牌游戏
- 简单游戏的画布与SVG
- 我的HTML5游戏不时暂停,我如何才能知道它是否's是由垃圾收集引起的
- 多人游戏完全在浏览器中运行,服务器仅用于数据库
- 通过PHP将单词添加到游戏中
- 一个简单的刽子手游戏的逻辑,以显示编码的单词
- 如何在JS中制作刽子手游戏
- 如何使用JavaScript在刽子手游戏中还剩3个猜测(生命)时显示提示
- 刽子手协助.当用户用尽所有尝试或猜到单词中的所有字母时,我需要停止游戏
- 刽子手的游戏.2数组.一个需要相应地更新另一个