- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
作为我作业的一部分,我正在制作一个简单的刽子手游戏,用户单击字母表,然后应该交换正确的字母,否则显示为 _。
我知道问题是 myWord[i].innerHTML =gues;
以及原因,但我不知道这里还可以使用什么。
如果您不想查看整个代码片段,则应该处理它的函数如下:
function wordOnClick() {
var guess = this.innerHTML; //Usikker
this.className = "active";
this.onclick = null;
for (var i=0; i<saveWord.length; i++) {
if (saveWord[i] === guess) {
myWord[i].innerHTML = guess;
var bool = true;
winCounter++;
}
}
if (bool != true) {
counter --;
animateMan();
}
if (counter === 0) {
document.getElementById("buttons").className = "active";
}
if (winCounter === saveWord.length) {
lifePool.innerHTML = "Congratz, you've won!";
hangmanbtn.style.display = "inherit";
}
}
完整代码在这里:
hangmanbtn.onclick = function() {
hangman();
};
/*
* Hangman!
* Runs when you click PLAY!
*/
function hangman() {
hangmanStyle();
createbuttons();
incompleteWord();
/*
* RESET CANVAS ON NEW GAME
*/
var canvas = document.getElementById("hangman");
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.clearRect(0, 0, canvas.width, canvas.height);
/*
* REMOVE CAVNAS OVERLAY & RESTORE BUTTONS
*/
hangmanbtn.style.display = "none";
hiddenCanvas.style.display = "none";
lifePool.innerHTML = "You have 6 lives";
document.getElementById("buttons").className = "";
/*
* VARIABLES
*/
var saveWord;
var words = [];
var guess;
var usedGuesses = [];
var getWord;
var myWord = document.getElementById("myWord").innerHTML;
var counter = 6;
var winCounter = 0;
/*
* This function creates the alphabet buttons
*/
function createbuttons() {
document.getElementById("buttons").innerHTML = "";
var sexyButtons = document.getElementById("buttons");
var letters = document.createElement("ul");
var alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
't', 'u', 'v', 'w', 'x', 'y', 'z'
];
for (var i = 0; i < alphabet.length; i++) {
letters.id = "alphabet";
var list = document.createElement("li");
list.id = "letter";
list.innerHTML = alphabet[i];
list.onclick = wordOnClick;
sexyButtons.appendChild(letters);
letters.appendChild(list);
}
}
/*
* Finds a random word and returns it
*/
function chosenWord() {
words = ["keyboard", "guitar", "elephant", "radio", "amnesia", "law", "programming", "princess",
"facebook", "pizza", "taco", "electronics", "titanic", "elevator", "cat", "house", "sea", "space", "galaxy", "psychopath", "marijuana", "youcanneverguessthiswordhahah"
];
var result = Math.floor(Math.random() * words.length);
saveWord = words[result];
console.log(saveWord);
return saveWord;
}
/*
* Gets word from chosenWord() and displays the word in a list
*/
function incompleteWord() {
var wordHolder = document.getElementById("hold");
var makeWordList = document.createElement("ul");
var getWord = chosenWord();
guess;
usedGuesses = [];
hold.innerHTML = "";
for (var i = 0; i < getWord.length; i++) {
makeWordList.id = "myWord";
guess = document.createElement("li");
guess.className = "guess";
guess.innerHTML = "_";
wordOnClick();
usedGuesses.push(guess);
wordHolder.appendChild(makeWordList);
makeWordList.appendChild(guess);
}
return getWord;
return usedGuesses;
}
/*
* Runs when you click a letter:
* Replaces _ with the correct letter, draws the hangman if it is wrong, whites out
* the already clicked letters, and gives feedback on remaining lives
*/
function wordOnClick() {
var guess = this.innerHTML; //Usikker
this.className = "active";
this.onclick = null;
for (var i = 0; i < saveWord.length; i++) {
if (saveWord[i] === guess) {
myWord[i].innerHTML = guess;
var bool = true;
winCounter++;
}
}
if (bool != true) {
counter--;
animateMan();
}
if (counter === 0) {
document.getElementById("buttons").className = "active";
}
if (winCounter === saveWord.length) {
lifePool.innerHTML = "Congratz, you've won!";
hangmanbtn.style.display = "inherit";
}
}
/*
* This function sets the width and color for the hangman
*/
function hangmanStyle() {
var ctx = document.getElementById("hangman").getContext("2d");
ctx.beginPath();
ctx.strokeStyle = "#000"
ctx.lineWidth = 4;
}
/*
* This function draws the hangman pieces in order
*/
function animateMan() {
var remLives = counter;
for (var i = -1; i < remLives; i++) {
if (remLives === 5) {
head();
lifePool.innerHTML = "You have " + remLives + " lives";
} else if (remLives === 4) {
body();
lifePool.innerHTML = "You have " + remLives + " lives";
} else if (remLives === 3) {
leftArm();
lifePool.innerHTML = "You have " + remLives + " lives";
} else if (remLives === 2) {
rightArm();
lifePool.innerHTML = "You have " + remLives + " lives";
} else if (remLives === 1) {
leftLeg();
lifePool.innerHTML = "You have " + remLives + " lives";
} else if (remLives === 0) {
rightLeg();
lifePool.innerHTML = "You have lost!";
hangmanbtn.style.display = "inherit";
}
}
}
/*
* These are the hangman limbs
*/
function head() {
var ctx = document.getElementById("hangman").getContext("2d");
ctx.beginPath();
ctx.fillStyle = "#000"
ctx.arc(235, 145, 25, 0, 2 * Math.PI)
ctx.fill();
ctx.stroke();
}
function body() {
var ctx = document.getElementById("hangman").getContext("2d");
ctx.beginPath();
ctx.moveTo(235, 170);
ctx.lineTo(235, 250);
ctx.stroke();
}
function leftArm() {
var ctx = document.getElementById("hangman").getContext("2d");
ctx.beginPath();
ctx.moveTo(235, 180);
ctx.lineTo(200, 200);
ctx.stroke();
}
function rightArm() {
var ctx = document.getElementById("hangman").getContext("2d");
ctx.beginPath();
ctx.moveTo(235, 180);
ctx.lineTo(270, 200);
ctx.stroke();
}
function leftLeg() {
var ctx = document.getElementById("hangman").getContext("2d");
ctx.beginPath();
ctx.moveTo(235, 250);
ctx.lineTo(200, 290);
ctx.stroke();
}
function rightLeg() {
var ctx = document.getElementById("hangman").getContext("2d");
ctx.beginPath();
ctx.moveTo(235, 250);
ctx.lineTo(270, 290);
ctx.stroke();
}
}
body {
background-color: antiquewhite;
}
.task {
margin: 5px;
padding: 3px;
border-top: 2px solid gray;
}
#hangman {
/*background-image: url("hangman/hangmanbackground.jpg");*/
background-color: #FFF;
}
#alphabet {
padding: 2px;
padding-top: 5px;
padding-bottom: 5px;
padding-left: 8px;
width: 380px;
height: 80px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
-khtml-border-radius: 5px;
border: solid 1px #fff;
background-color: forestgreen;
}
#alphabet li {
float: left;
margin: 0 5px 13px 0;
list-style: none;
width: 12px;
height: 10px;
padding: 5px;
padding-bottom: 15px;
background: #c1d72e;
color: #fff;
cursor: pointer;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
-khtml-border-radius: 5px;
border: solid 1px #fff;
}
#alphabet li:hover {
background: #3ADF00;
border: solid 1px #fff;
color: #fff;
}
.active {
opacity: 0.4;
filter: alpha(opacity=40);
-moz-transition: all 1s ease-in;
-moz-transition: all 0.3s ease-in-out;
-webkit-transition: all 0.3s ease-in-out;
cursor: default;
}
.active:hover {
-moz-transition: all 1s ease-in;
-moz-transition: all 0.3s ease-in-out;
-webkit-transition: all 0.3s ease-in-out;
opacity: 0.4;
filter: alpha(opacity=40);
-moz-transition: all 1s ease-in;
-moz-transition: all 0.3s ease-in-out;
-webkit-transition: all 0.3s ease-in-out;
}
#myWord {
margin: 0;
display: block;
padding: 0;
display: block;
}
#myWord li {
position: relative;
list-style: none;
margin: 0;
display: inline-block;
padding: 0 10px;
font-size: 30px;
}
#lifePool {
max-width: 300px;
margin: 0;
z-index: 3px;
font-size: 30px;
font-family: monospace;
color: #c1d72e;
}
#hiddenCanvas {
height: 500px;
width: 800px;
position: absolute;
z-index: 4;
background-color: forestgreen;
opacity: 0.8;
}
#hangmanbtn {
width: 100px;
height: 50px;
background-color: #c1d72e;
border-radius: 10px;
color: #fff;
font-size: 25px;
}
<section class="task">
<h3>
Task 4
</h3>
<button id=hangmanbtn>Play!</button>
<div id="hiddenCanvas"></div>
<p id="lifePool"></p>
<div id="buttons"></div>
<div id="hold"></div>
<canvas id="hangman" height="500px" width="800px"></canvas>
</section>
最佳答案
您的错误是您总是将变量重置为其默认值。请正确的方法:
hangmanbtn.onclick = function() {
hangman();
};
/*
* Hangman!
* Runs when you click PLAY!
*/
function hangman() {
hangmanStyle();
createbuttons();
incompleteWord();
/*
* RESET CANVAS ON NEW GAME
*/
var canvas = document.getElementById("hangman");
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.clearRect(0, 0, canvas.width, canvas.height);
/*
* REMOVE CAVNAS OVERLAY & RESTORE BUTTONS
*/
hangmanbtn.style.display = "none";
hiddenCanvas.style.display = "none";
lifePool.innerHTML = "You have 6 lives";
document.getElementById("buttons").className = "";
/*
* VARIABLES
*/
var saveWord;
var words = [];
var guess;
var getWord;
var myWord = document.getElementById("myWord").innerHTML;
var counter = 6;
var winCounter = 0;
/*
* This function creates the alphabet buttons
*/
function createbuttons() {
document.getElementById("buttons").innerHTML = "";
var sexyButtons = document.getElementById("buttons");
var letters = document.createElement("ul");
var alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
't', 'u', 'v', 'w', 'x', 'y', 'z'
];
for (var i = 0; i < alphabet.length; i++) {
letters.id = "alphabet";
var list = document.createElement("li");
list.id = "letter";
list.innerHTML = alphabet[i];
list.onclick = wordOnClick;
sexyButtons.appendChild(letters);
letters.appendChild(list);
}
}
/*
* Finds a random word and returns it
*/
function chosenWord() {
words = ["keyboard", "guitar", "elephant", "radio", "amnesia", "law", "programming", "princess",
"facebook", "pizza", "taco", "electronics", "titanic", "elevator", "cat", "house", "sea", "space", "galaxy", "psychopath", "marijuana", "youcanneverguessthiswordhahah"
];
var result = Math.floor(Math.random() * words.length);
saveWord = words[result];
console.log(saveWord);
return saveWord;
}
/*
* Gets word from chosenWord() and displays the word in a list
*/
function incompleteWord() {
var wordHolder = document.getElementById("hold");
var makeWordList = document.createElement("ul");
var getWord = chosenWord();
guess;
usedGuesses = [];
hold.innerHTML = "";
for (var i = 0; i < getWord.length; i++) {
makeWordList.id = "myWord";
guess = document.createElement("li");
guess.className = "guess";
guess.innerHTML = "_";
wordOnClick();
usedGuesses.push(guess);
wordHolder.appendChild(makeWordList);
makeWordList.appendChild(guess);
}
return getWord;
return usedGuesses;
}
/*
* Runs when you click a letter:
* Replaces _ with the correct letter, draws the hangman if it is wrong, whites out
* the already clicked letters, and gives feedback on remaining lives
*/
function wordOnClick() {
var guess = this.innerHTML; //Usikker
this.className = "active";
this.onclick = null;
for (var i = 0; i < saveWord.length; i++) {
if (saveWord[i] === guess) {
usedGuesses[i].innerHTML = guess;
var bool = true;
winCounter++;
}
}
if (bool != true) {
counter--;
animateMan();
}
if (counter === 0) {
document.getElementById("buttons").className = "active";
}
if (winCounter === saveWord.length) {
lifePool.innerHTML = "Congratz, you've won!";
hangmanbtn.style.display = "inherit";
}
}
/*
* This function sets the width and color for the hangman
*/
function hangmanStyle() {
var ctx = document.getElementById("hangman").getContext("2d");
ctx.beginPath();
ctx.strokeStyle = "#000"
ctx.lineWidth = 4;
}
/*
* This function draws the hangman pieces in order
*/
function animateMan() {
var remLives = counter;
for (var i = -1; i < remLives; i++) {
if (remLives === 5) {
head();
lifePool.innerHTML = "You have " + remLives + " lives";
} else if (remLives === 4) {
body();
lifePool.innerHTML = "You have " + remLives + " lives";
} else if (remLives === 3) {
leftArm();
lifePool.innerHTML = "You have " + remLives + " lives";
} else if (remLives === 2) {
rightArm();
lifePool.innerHTML = "You have " + remLives + " lives";
} else if (remLives === 1) {
leftLeg();
lifePool.innerHTML = "You have " + remLives + " lives";
} else if (remLives === 0) {
rightLeg();
lifePool.innerHTML = "You have lost!";
hangmanbtn.style.display = "inherit";
}
}
}
/*
* These are the hangman limbs
*/
function head() {
var ctx = document.getElementById("hangman").getContext("2d");
ctx.beginPath();
ctx.fillStyle = "#000"
ctx.arc(235, 145, 25, 0, 2 * Math.PI)
ctx.fill();
ctx.stroke();
}
function body() {
var ctx = document.getElementById("hangman").getContext("2d");
ctx.beginPath();
ctx.moveTo(235, 170);
ctx.lineTo(235, 250);
ctx.stroke();
}
function leftArm() {
var ctx = document.getElementById("hangman").getContext("2d");
ctx.beginPath();
ctx.moveTo(235, 180);
ctx.lineTo(200, 200);
ctx.stroke();
}
function rightArm() {
var ctx = document.getElementById("hangman").getContext("2d");
ctx.beginPath();
ctx.moveTo(235, 180);
ctx.lineTo(270, 200);
ctx.stroke();
}
function leftLeg() {
var ctx = document.getElementById("hangman").getContext("2d");
ctx.beginPath();
ctx.moveTo(235, 250);
ctx.lineTo(200, 290);
ctx.stroke();
}
function rightLeg() {
var ctx = document.getElementById("hangman").getContext("2d");
ctx.beginPath();
ctx.moveTo(235, 250);
ctx.lineTo(270, 290);
ctx.stroke();
}
}
body {
background-color: antiquewhite;
}
.task {
margin: 5px;
padding: 3px;
border-top: 2px solid gray;
}
#hangman {
/*background-image: url("hangman/hangmanbackground.jpg");*/
background-color: #FFF;
}
#alphabet {
padding: 2px;
padding-top: 5px;
padding-bottom: 5px;
padding-left: 8px;
width: 380px;
height: 80px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
-khtml-border-radius: 5px;
border: solid 1px #fff;
background-color: forestgreen;
}
#alphabet li {
float: left;
margin: 0 5px 13px 0;
list-style: none;
width: 12px;
height: 10px;
padding: 5px;
padding-bottom: 15px;
background: #c1d72e;
color: #fff;
cursor: pointer;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
-khtml-border-radius: 5px;
border: solid 1px #fff;
}
#alphabet li:hover {
background: #3ADF00;
border: solid 1px #fff;
color: #fff;
}
.active {
opacity: 0.4;
filter: alpha(opacity=40);
-moz-transition: all 1s ease-in;
-moz-transition: all 0.3s ease-in-out;
-webkit-transition: all 0.3s ease-in-out;
cursor: default;
}
.active:hover {
-moz-transition: all 1s ease-in;
-moz-transition: all 0.3s ease-in-out;
-webkit-transition: all 0.3s ease-in-out;
opacity: 0.4;
filter: alpha(opacity=40);
-moz-transition: all 1s ease-in;
-moz-transition: all 0.3s ease-in-out;
-webkit-transition: all 0.3s ease-in-out;
}
#myWord {
margin: 0;
display: block;
padding: 0;
display: block;
}
#myWord li {
position: relative;
list-style: none;
margin: 0;
display: inline-block;
padding: 0 10px;
font-size: 30px;
}
#lifePool {
max-width: 300px;
margin: 0;
z-index: 3px;
font-size: 30px;
font-family: monospace;
color: #c1d72e;
}
#hiddenCanvas {
height: 500px;
width: 800px;
position: absolute;
z-index: 4;
background-color: forestgreen;
opacity: 0.8;
}
#hangmanbtn {
width: 100px;
height: 50px;
background-color: #c1d72e;
border-radius: 10px;
color: #fff;
font-size: 25px;
}
<section class="task">
<h3>
Task 4
</h3>
<button id=hangmanbtn>Play!</button>
<div id="hiddenCanvas"></div>
<p id="lifePool"></p>
<div id="buttons"></div>
<div id="hold"></div>
<canvas id="hangman" height="500px" width="800px"></canvas>
</section>
关于javascript - Hangman 游戏 - 替换列表中的字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33066548/
我想做的是让 JTextPane 在 JPanel 中占用尽可能多的空间。对于我使用的 UpdateInfoPanel: public class UpdateInfoPanel extends JP
我在 JPanel 中有一个 JTextArea,我想将其与 JScrollPane 一起使用。我正在使用 GridBagLayout。当我运行它时,框架似乎为 JScrollPane 腾出了空间,但
我想在 xcode 中实现以下功能。 我有一个 View Controller 。在这个 UIViewController 中,我有一个 UITabBar。它们下面是一个 UIView。将 UITab
有谁知道Firebird 2.5有没有类似于SQL中“STUFF”函数的功能? 我有一个包含父用户记录的表,另一个表包含与父相关的子用户记录。我希望能够提取用户拥有的“ROLES”的逗号分隔字符串,而
我想使用 JSON 作为 mirth channel 的输入和输出,例如详细信息保存在数据库中或创建 HL7 消息。 简而言之,输入为 JSON 解析它并输出为任何格式。 最佳答案 var objec
通常我会使用 R 并执行 merge.by,但这个文件似乎太大了,部门中的任何一台计算机都无法处理它! (任何从事遗传学工作的人的附加信息)本质上,插补似乎删除了 snp ID 的 rs 数字,我只剩
我有一个以前可能被问过的问题,但我很难找到正确的描述。我希望有人能帮助我。 在下面的代码中,我设置了varprice,我想添加javascript变量accu_id以通过rails在我的数据库中查找记
我有一个简单的 SVG 文件,在 Firefox 中可以正常查看 - 它的一些包装文本使用 foreignObject 包含一些 HTML - 文本包装在 div 中:
所以我正在为学校编写一个 Ruby 程序,如果某个值是 1 或 3,则将 bool 值更改为 true,如果是 0 或 2,则更改为 false。由于我有 Java 背景,所以我认为这段代码应该有效:
我做了什么: 我在这些账户之间创建了 VPC 对等连接 互联网网关也连接到每个 VPC 还配置了路由表(以允许来自双方的流量) 情况1: 当这两个 VPC 在同一个账户中时,我成功测试了从另一个 La
我有一个名为 contacts 的表: user_id contact_id 10294 10295 10294 10293 10293 10294 102
我正在使用 Magento 中的新模板。为避免重复代码,我想为每个产品预览使用相同的子模板。 特别是我做了这样一个展示: $products = Mage::getModel('catalog/pro
“for”是否总是检查协议(protocol)中定义的每个函数中第一个参数的类型? 编辑(改写): 当协议(protocol)方法只有一个参数时,根据该单个参数的类型(直接或任意)找到实现。当协议(p
我想从我的 PHP 代码中调用 JavaScript 函数。我通过使用以下方法实现了这一点: echo ' drawChart($id); '; 这工作正常,但我想从我的 PHP 代码中获取数据,我使
这个问题已经有答案了: Event binding on dynamically created elements? (23 个回答) 已关闭 5 年前。 我有一个动态表单,我想在其中附加一些其他 h
我正在尝试找到一种解决方案,以在 componentDidMount 中的映射项上使用 setState。 我正在使用 GraphQL连同 Gatsby返回许多 data 项目,但要求在特定的 pat
我在 ScrollView 中有一个 View 。只要用户按住该 View ,我想每 80 毫秒调用一次方法。这是我已经实现的: final Runnable vibrate = new Runnab
我用 jni 开发了一个 android 应用程序。我在 GetStringUTFChars 的 dvmDecodeIndirectRef 中得到了一个 dvmabort。我只中止了一次。 为什么会这
当我到达我的 Activity 时,我调用 FragmentPagerAdapter 来处理我的不同选项卡。在我的一个选项卡中,我想显示一个 RecyclerView,但他从未出现过,有了断点,我看到
当我按下 Activity 中的按钮时,会弹出一个 DialogFragment。在对话框 fragment 中,有一个看起来像普通 ListView 的 RecyclerView。 我想要的行为是当
我是一名优秀的程序员,十分优秀!