javascript - Javascript 中的 Hangman 问题
问题描述
var words = ['NISSAN', 'LAMBORGHINI', 'AUDI', 'TOYOTA', 'BMW', 'MERCEDES', 'HONDA', 'HYUNDAI', 'VOLKSWAGEN', 'PORSCHE'];
var score = 0;
var fails = 0;
var displayedWord = [];
str2 = "";
usedLetters = "";
var randomItem = words[Math.floor(Math.random()*words.length)];
function startBtn(ScorePastGame) {
document.getElementById("startmessage").value = "";
var inputs = document.getElementsByClassName('enableLetters');
for(var i = 0; i < inputs.length; i++) {
inputs[i].disabled = false;
}
randomItem = words[Math.floor(Math.random()*words.length)];
var i = 0;
newWord = "";
for (var i = 0; i< randomItem.length; i++) {
newWord += "#";
}
var fails = 0;
console.log(randomItem);
document.getElementById("fail").value = fails;
document.getElementById("hangman").value = newWord;
if (ScorePastGame && ScorePastGame !=0)
{
score = ScorePastGame;
}
else
{
score = 0;
}
fails = 0;
}
function clickButton(letter) {
var txtRandomword = document.getElementById("hangman").value;
var WrongLetters = document.getElementById("startmessage").value;
var liveNum = document.getElementById("fail").value;
var Fail = true;
if (randomItem.includes(letter))
{
for (var k = 0; k < randomItem.length; k++)
{
if(randomItem.charAt(k) == letter)
{
newWord = newWord.substr(0,k) + letter + newWord.substr(k + 1);
}
}
document.getElementById("hangman").value = newWord;
if (!newWord.includes("#"))
{
alert("You win!");
fails = 0;
score++;
document.getElementById("score").value = score;
startBtn(score);
}
}
else
{
fails++;
document.getElementById("fail").value = fails;
if (fails > 6) {
alert("You lose!");
fails = 0;
usedLetters = "";
startBtn();
}
}
usedLetters += letter + " ";
document.getElementById("startmessage").value = usedLetters;
}
table{
background-color: thistle;
margin: 0px auto;
margin-top: 13%;
}
.enableLetters,
#score,
#fail,
#hangman,
#startmessage:disabled {
background: white;
color: black;
}
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="styles.css">
<script src="script.js"></script>
</head>
<body>
<form>
<table border="1">
<tr>
<td colspan="4" style="text-align: right">
<label for="score">Score: </label>
<input type="text" id="score" name="score" value="0" size="2" checked="valid()" disabled/><br>
<label for="fail">Fails (6): </label>
<input type="text" id="fail" name="fail" value="0" size="2" disabled/>
</td>
<td colspan="7" style="text-align: center">
<label for="hangman"></label>
<input type="text" id="hangman" name="hangman" value=" ---Hangman--- " disabled/><br>
<label for="startmessage"></label>
<input type="text" id="startmessage" name="startmessage" value="Click Start to get a word." disabled/>
</td>
<td colspan="2" style="text-align: center">
<label for="start"></label>
<input type="button" id="start" name="start" value="Start" onclick="startBtn()"/>
</td>
</tr>
<tr>
<td style="text-align: center"><input type="button" class="enableLetters" value="A" onClick="clickButton('A')" disabled/></td>
<td style="text-align: center"><input type="button" class="enableLetters" value="B" onClick="clickButton('B')" disabled/></td>
<td style="text-align: center"><input type="button" class="enableLetters" value="C" onClick="clickButton('C')" disabled/></td>
<td style="text-align: center"><input type="button" class="enableLetters" value="D" onClick="clickButton('D')" disabled/></td>
<td style="text-align: center"><input type="button" class="enableLetters" value="E" onClick="clickButton('E')" disabled/></td>
<td style="text-align: center"><input type="button" class="enableLetters" value="F" onClick="clickButton('F')" disabled/></td>
<td style="text-align: center"><input type="button" class="enableLetters" value="G" onClick="clickButton('G')" disabled/></td>
<td style="text-align: center"><input type="button" class="enableLetters" value="H" onClick="clickButton('H')" disabled/></td>
<td style="text-align: center"><input type="button" class="enableLetters" value="I" onClick="clickButton('I')" disabled/></td>
<td style="text-align: center"><input type="button" class="enableLetters" value="J" onClick="clickButton('J')" disabled/></td>
<td style="text-align: center"><input type="button" class="enableLetters" value="K" onClick="clickButton('K')" disabled/></td>
<td style="text-align: center"><input type="button" class="enableLetters" value="L" onClick="clickButton('L')" disabled/></td>
<td style="text-align: center"><input type="button" class="enableLetters" value="M" onClick="clickButton('M')" disabled/></td>
</tr>
<tr>
<td style="text-align: center"><input type="button" class="enableLetters" value="N" onClick="clickButton('N')" disabled/></td>
<td style="text-align: center"><input type="button" class="enableLetters" value="O" onClick="clickButton('O')" disabled/></td>
<td style="text-align: center"><input type="button" class="enableLetters" value="P" onClick="clickButton('P')" disabled/></td>
<td style="text-align: center"><input type="button" class="enableLetters" value="Q" onClick="clickButton('Q')" disabled/></td>
<td style="text-align: center"><input type="button" class="enableLetters" value="R" onClick="clickButton('R')" disabled/></td>
<td style="text-align: center"><input type="button" class="enableLetters" value="S" onClick="clickButton('S')" disabled/></td>
<td style="text-align: center"><input type="button" class="enableLetters" value="T" onClick="clickButton('T')" disabled/></td>
<td style="text-align: center"><input type="button" class="enableLetters" value="U" onClick="clickButton('U')" disabled/></td>
<td style="text-align: center"><input type="button" class="enableLetters" value="V" onClick="clickButton('V')" disabled/></td>
<td style="text-align: center"><input type="button" class="enableLetters" value="W" onClick="clickButton('W')" disabled/></td>
<td style="text-align: center"><input type="button" class="enableLetters" value="X" onClick="clickButton('X')" disabled/></td>
<td style="text-align: center"><input type="button" class="enableLetters" value="Y" onClick="clickButton('Y')" disabled/></td>
<td style="text-align: center"><input type="button" class="enableLetters" value="Z" onClick="clickButton('Z')" disabled/></td>
</tr>
</table>
</form>
</body>
</html>
我正在使用 HTML、CSS 和 JavaScript 编写一个刽子手游戏。在网上搜索后,我仍然无法弄清楚如何解决我面临的问题。所以刽子手游戏的工作原理是用户点击字母,他们点击的字母会显示在上面的框中。我现在的问题是我无法阻止相同的字母出现在盒子上,这会影响失败的次数。
不知何故,我在赢/输后清除框的代码总是以用户单击的最后一个字母产生。
请告知我应该如何更改我的代码谢谢!
解决方案
我已经想通了。通过将输出转换为数组,我可以删除重复的字母。一个简单的 .length 新 Set 也可以解决计数超出其应有的错误。
usedLetters += letter;
const wrong = usedLetters.split('');
let duplicateLetters = [...new Set(wrong)];
document.getElementById("startmessage").value = duplicateLetters;
document.getElementById("fail").value = duplicateLetters.length;
推荐阅读
- excel - 如何使用 bang 运算符解决访问 vba 代码问题
- reactjs - 为什么我的 axios POST 调度不起作用?
- visual-studio-code - 安装在其他目录中的 vscode 给出拒绝访问错误
- c# - 传递函数
作为使用反射的参数? - reactjs - React hooks - 每分钟管理 API 调用
- excel - 如何从字典中打印类
- wcf - Enable SOAP And REST On Same WCF Service And Contract
- elasticsearch - ElasticSearch:如果我只想返回一些字段,哪种方式更好?
- android - 将数据从本机反应发送到 ReactActivity 并关闭片段
- android - Fragment 到 Activity 在同一个 Fragment 上再次返回