首页 > 解决方案 > 有人可以解释这个函数/参数吗?

问题描述

我了解该功能在做什么,但我不明白为什么它在做它正在做的事情。具体来说,我不明白 checkLetters 函数(字母)和(猜测)的参数,它是如何工作的,以及如何在 if/else 语句中使用它来确定所选字母是否正确。“字母”不是变量,仅作为函数中的参数提及,并且仍以以下方式使用:

randomWord[i] == letter
blanksAndCorrect[i] = letter;
checkLetters(guesses);

参数是否转换为变量?我引用的代码位于以下部分的 Javascript 文本中://call start game function & //CHECK LETTERS/COMPARE FUNCTION。

//VARIABLES
var words = ["arthur", "rugrats", "thesimpsons", "scoobydoo", "spongebob", "dannyphantom", "teentitans"]

//Empty variables to store values later
var randomWord = "";
var lettersOfWord = []
var blanks = 0;
var blanksAndCorrect = [];
var wrongGuess = [];

//Counter Variables
var wins = 0;
var losses = 0;
var guessesRemaining = 9;



// ALL FUNCTIONS
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


//__________________________________________________________
//GAME START FUNCTION
//__________________________________________________________
function Game() {
    //computer generates random word from words array
    randomWord = words[Math.floor(Math.random() * words.length)];

    // split the individual word into separate arrays, and store in new array 
    lettersOfWord = randomWord.split("");

    //store length of word in blanks, for later use
    blanks = lettersOfWord.length;

    //creating a loop to generate "_" for each letter in array stored in blanks
    for (var i = 0; i < blanks; i++) {
        blanksAndCorrect.push("_");
    }

    //showing the "_" within HTML
    document.getElementById("currentword").innerHTML = "  " + blanksAndCorrect.join("  ");

    //console logging 
    console.log(randomWord);
    console.log(lettersOfWord)
    console.log(blanks)
    console.log(blanksAndCorrect)
}


//__________________________________________________________
//AUDIO FUNCTION
//__________________________________________________________

//variables for audio function
var a = document.getElementById("arthur");
var r = document.getElementById("rugrats");
var simpsons = document.getElementById("simpsons");
var scoobydoo = document.getElementById("scoobydoo");
var spongebob = document.getElementById("spongebob");
var danny = document.getElementById("danny");
var teent = document.getElementById("teent");



//__________________________________________________________
//RESET FUNCTION
//__________________________________________________________
function reset() {
    guessesRemaining = 9;
    wrongGuess = [];
    blanksAndCorrect = [];
    Game()
}

//__________________________________________________________
//CHECK LETTERS/COMPARE FUNCTION
//__________________________________________________________

//If/Else, to see if letter selected matches random word
function checkLetters(letter) {
    var letterInWord = false;
    //if the generated randomword is equal to the letter entered... then variable is true
    for (var i = 0; i < blanks; i++) {
        if (randomWord[i] == letter) {
            letterInWord = true;
        }
    }
    //if letterInWord (false)
    if (letterInWord) {
        //check each letter to see if it matches word
        for (var i = 0; i < blanks; i++) {
            if (randomWord[i] == letter) {
                blanksAndCorrect[i] = letter;
                console.log(blanksAndCorrect[i])
            }
        }
    }
    //otherwise, push the incorrect guess in the wrong guesses section, and reduce remaining guesses
    else {
        wrongGuess.push(letter);
        guessesRemaining--;
    }
    console.log(blanksAndCorrect);
}

//__________________________________________________________
//FINAL COMPLETE FUNCTION
//__________________________________________________________

//check to see if player won...
function complete() {
    console.log("wins:" + wins + "| losses:" + losses + "| guesses left:" + guessesRemaining)

    //if WON...then alert, play audio, display image and reset new round
    if (lettersOfWord.toString() == blanksAndCorrect.toString()) {
        wins++;
        aud()
        reset()
        //display wins on screen
        document.getElementById("winstracker").innerHTML = " " + wins;

        //if LOST...then alert and reset new round
    } else if (guessesRemaining === 0) {
        losses++;
        reset()
        document.getElementById("image").src = "./assets/images/try-again.png"
        document.getElementById("losstracker").innerHTML = " " + losses;
    }
    //display losses on screen && guesses remaining countdown
    document.getElementById("currentword").innerHTML = "  " + blanksAndCorrect.join(" ");
    document.getElementById("guessesremaining").innerHTML = " " + guessesRemaining;
}


//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//_____________________________________________________
// EXECUTE CODE 
//_____________________________________________________

//call start game function
Game()

//check for keyup, and convert to lowercase then store in guesses
document.onkeyup = function (event) {
    var guesses = String.fromCharCode(event.keyCode).toLowerCase();
    //check to see if guess entered matches value of random word
    checkLetters(guesses);
    //process wins/loss 
    complete();
    //store player guess in console for reference 
    console.log(guesses);

    //display/store incorrect letters on screen
    document.getElementById("playerguesses").innerHTML = "  " + wrongGuess.join(" ");
}
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>CHILDHOOD SHOWS GAME</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    </head>

    <body>
        <!--Main Heading-->
        <div class="heading">
            <h1>CHILDHOOD SHOWS</h1>
        </div>

        <div class="background">
            <div class="container">

                <!--Changing Image based on correct answers-->
                <h2>Press Any Key To Guess This Word!</h2>
                
                <!--Current Word Container-->
                <div>
                    <h3 id="currentword">_ _ _ _ _</h3>
                </div>
                <div id="scoreboard">
                    <!--Guesses left Container-->
                    <div class="sidebar">
                        <h3>GUESSES LEFT:
                            <span id="guessesremaining"></span>
                        </h3>
                    </div>

                    <!--Wins counter Container-->
                    <div class="sidebar">
                        <h3>WINS:
                            <span id="winstracker"></span>
                        </h3>
                    </div>
                    <!--Loss counter Container-->
                    <div class="sidebar">
                        <h3>LOSSES:
                            <span id="losstracker"></span>
                        </h3>
                    </div>

                    <!--Wrong guesses container-->
                    <div class="sidebar">
                        <h3>LETTERS YOU GUESSED WRONG:
                            <span id="playerguesses"></span>
                        </h3>
                    </div>
                </div>
            </div>
        </div>



        


        <script src="./game.js"></script>

    </body>

</html>

标签: javascriptfunctionarguments

解决方案


推荐阅读