我正在从事我的第一个实际项目,即“ Hangman”风格的游戏。我正在尝试执行此操作,但不确定我要去哪里:如果单击了“错误的字母”,请随机显示“身体部位”之一并从数组中删除,以使其无法重复。 / p>
let wrongAmount = 0
let wrongLettersArray = ["#alphabetLetterA", "#alphabetLetterB", "#alphabetLetterC", "#alphabetLetterD", "#alphabetLetterE", "#alphabetLetterF", "#alphabetLetterG", "#alphabetLetterH", "#alphabetLetterJ", "#alphabetLetterK", "#alphabetLetterM", "#alphabetLetterN", "#alphabetLetterQ", "#alphabetLetterR", "#alphabetLetterU", "#alphabetLetterV", "#alphabetLetterW", "#alphabetLetterX", "#alphabetLetterY", "#alphabetLetterZ"]
let bodyPartsArray = ["#losingTorso", "#losingRightArm", "#losingLeftArm", "#losingRightLeg", "#losingLeftLeg"]
let correctLettersArray = ["#correctLetterP", "#correctLetterI", "#correctLetterS", "#correctLetterT", "#correctLetterO", "#correctLetterL"]
function wrongGuess() {
$(wrongLettersArray).on('click', function () {
$(bodyPartsArray).show()
wrongGuess()
})
}
//if a wrong letter is clicked show one of the body parts at random
//remove from list so it cannot repeat
//add 1 to the wrong amount
答案 0 :(得分:2)
如果我的理解正确,您想从身体部位阵列中选择一个项目并将其删除,以便无法再次选择它?您可以为此使用splice()。
const ar = [0, 1, 2, 3, 4, 5, 6]
const idx = Math.floor(Math.random() * ar.length)
const item = ar.splice(idx, 1)
console.log(item, ar)
在上面,我们有一个数组(在这种情况下,这就是您的身体部位数组)。然后,我们选择一个索引,该索引在该数组的长度内。然后,拼接从该索引处的数组中删除该项目并返回它。
答案 1 :(得分:1)
您的代码的第一个问题是它永远不会被执行。您需要设置代码以运行,但是由于您永远不会在函数本身之外执行该函数,因此它也不会设置观察程序。
您可以这样做:
$(document).ready(function () {
wrongGuess();
});
不幸的是,您编写的代码不能正确执行您需要执行的操作,因此,我为您提供了以下解决方案。
首先,我建立了一些基本的HTML来说明坏字母:
<h2>wrong</h2>
<button id="a">A</button>
<button id="b">B</button>
<h2>correct</h2>
<button id="p">P</button>
<button id="s">S</button>
<hr>
<h1 id="torso">torso</h1>
<h1 id="right-arm">right arm</h1>
<hr>
wrong count: <span id="wrong">0</span>
然后,我设置了一个函数以初始隐藏所有身体部位:
function hideAllBodyParts() {
var bodyPartsSelector = bodyPartsArray.join(', ');
$(bodyPartsSelector).hide();
}
您不能将数组作为选择器传递给jQuery,它必须是字符串,即'#a, #b'
而不是['#a', '#b']
。
然后您的主要功能一次显示一个身体部位并增加错误的计数:
function watchForWrongGuesses() {
// Your selector needs to be a string, e.g. '#a, #b' not an array ['#a', '#b']
var wrongLettersSelectors = wrongLettersArray.join(', ');
$(wrongLettersSelectors).on('click', function () {
// Choose one body part and show it
var bodyPart = bodyPartsArray.pop();
$(bodyPart).show();
// Increment wrong count
wrongAmount++;
$('#wrong').text(wrongAmount);
});
}
然后,最后但最重要的部分是在文档加载时将其链接起来:
$(document).ready(function () {
hideAllBodyParts();
watchForWrongGuesses();
});
此方法首先隐藏所有身体部位,然后为按钮单击设置观察器。