JavaScript Hangman游戏 - 正确猜出每个单词的特定歌曲

时间:2018-06-04 04:52:03

标签: javascript loops if-statement

我是编码的新手,我正在玩一个人的Hangman游戏代码。我决定改变银行这个词,成为各种歌曲的名字。我认为如果这首歌在正确猜测之后播放会很酷,但我不确定如何编码。

当然我会声明并设置变量:      var stayinAlive =新音频(/assets/sounds/stayingalive.mp3);

实际上代码该实例,我认为这将是使用if循环的行,例如:

if (selectableWords == "stayinalive") {
stayinAlive.play();
} 
 else if {
(selectableWords == "dancingqueen") {
dancingQueen.play(); 

当然,该代码不起作用。我不认为我正在链接正确的变量(selectableWords),我也不确定我会把这段代码放在哪里(我猜它可能与checkWin()函数有关? )

以下是我正在使用的一些javascript:

'use strict';

var selectableWords =          
[
    "stayinalive",
    "dancingqueen",
];

const maxTries = 10;

var guessedLetters = [];
var currentWordIndex;           
var guessingWord = [];          
var remainingGuesses = 0;       
var hasFinished = false;             
var wins = 0;                   
var losses = 0;

// Game sounds
var stayinAlive = new Audio('./assets/sounds/stayinalive.mp3');
var dancingQueen = new Audio('./assets/sounds/dancingqueen.mp3');

function resetGame() {
remainingGuesses = maxTries;

currentWordIndex = Math.floor(Math.random() * (selectableWords.length));

稍后在代码中......

function checkWin() {
  if(guessingWord.indexOf("_") === -1) {
    document.getElementById("youwin-image").style.cssText = "display: block";
    document.getElementById("pressKeyTryAgain").style.cssText= "display: block";
    wins++;
    hasFinished = true;
 }
};

function checkLoss() {
  if(remainingGuesses <= 0) {
    document.getElementById("gameover-image").style.cssText = "display: block";
    document.getElementById("pressKeyTryAgain").style.cssText = "display:block";
    losses++
    hasFinished = true;
 }
}

2 个答案:

答案 0 :(得分:2)

有更好的方法。您可以将变量映射为correctAnswer:“songPath”。该代码的示例如下:

{{1}}

编辑:这是一个教程,可以帮助您更好地理解和学习这个原则:http://pietschsoft.com/post/2015/09/05/JavaScript-Basics-How-to-create-a-Dictionary-with-KeyValue-pairs

答案 1 :(得分:2)

var selectableWords =          
[
    "stayinalive",
    "dancingqueen",
];

表示包含可能的单词选择的单词数组,而不是当前猜到的单词。

if (selectableWords == "stayinalive") {
stayinAlive.play();
} 
 else if {
(selectableWords == "dancingqueen") {
dancingQueen.play(); 
这里的

selectableWords仍然分配给["stayinalive", "dancingqueen"]

您需要将这些常数与当前单词进行比较。

currentWordIndex = Math.floor(Math.random() * (selectableWords.length));

在随机选择的可选单词数组中可以找到当前单词的数字。

您可以通过数字索引https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array

访问数组的值

在你的例子中

selectableWords[0]的值为stayinalive

selectableWords[1]的值为dancingqueen

您可以使用当前索引获取当前单词。

selectableWords[currentWordIndex]会为您提供单词的名称。

所以,你可以做到

if (selectableWords[currentWordIndex] == "stayinalive") {
stayinAlive.play();
} 

但是,这很快就会失控,因此使用其他数据结构(例如@someRandomSerbianGuy的答案)将为您提供更长久的可维护代码。

相关问题