2013-04-20 30 views
-1

所以我的程序打印隨機字到控制檯,所以我可以檢查這個詞是測試和實施,所以當我我正在測試代碼並猜測正確的字母,單詞佔位符在點擊猜測按鈕後沒有更新,它只是在hangman階段循環。這是我的程序代碼;Hang子手Javascript - 我的代碼似乎沒有更新字佔位符時,一個字母被猜對了

var wordsArray = ["monitor", "program", "application", "keyboard", "javascript", "gaming", "network"]; 
var word; 
var goesLeft; 
var placeholder; 
var input; 
var wordLength; 
var wordSubstring; 
var currentWord; 

    function newGame() 
    { 

    placeholder = ""; 
    goesLeft = 10; 
    var word = wordsArray[Math.floor(Math.random() * wordsArray.length)]; 
    currentWord = 0; 
    word = wordsArray[currentWord]; 
    wordLength = currentWord.length; 
    wordSubstring = currentWord.substring; 
    console.log(word); 
    var myElement = document.getElementById("button").innerHTML = "Click to guess"; 
    var myPicElement = document.getElementById("hangimage").src = "http://fetlar.kingston.ac.uk/pp/hangman10.jpg"; 

    for (var count = 0; count < word.length; count++) 
    { 
     placeholder = placeholder + "-"; 
    } 

    document.getElementById("placeholder").innerHTML = placeholder; 
    document.getElementById("gamestatus").innerHTML = "Game running"; 
    } 

    function guessLetter() 
    { 
    var correct = 0; 

    var inputBox = document.getElementById("guessinput"); 
    input = inputBox.value; 


    console.log(word); 

    for (var count = 0; count < wordLength; count++) 
    { 
     if (input == word.substring(count, count + 1)) 
     { 
     correct++; 
     placeholder = placeholder.substring(0, count) + input + placeholder.substring(count + 1, placeholder.length + 1); 
     document.getElementById("placeholder").innerHTML = placeholder; 
     } 
    } 

    if (correct == 0) 
    { 
     goesLeft--; 
    } 
    var url = document.getElementById("hangimage").src = "http://fetlar.kingston.ac.uk/pp/hangman" + goesLeft + ".jpg"; 

    if (placeholder == word) 
    { 
     document.getElementById("hangimage").src = "http://fetlar.kingston.ac.uk/pp/hangman_win.jpg"; 
     alert("You guessed the word correctly. You win!"); 
    } 

    if (goesLeft == 0) 
    { 
     alert("You lose"); 
     newGame(); 
    } 
    } 
newGame(); 
document.getElementById("button").onclick = guessLetter; 

這裏是我的代碼佔位符問題必須在底層,程序也運行良好我沒有得到任何錯誤。

for (var count = 0; count < wordLength; count++) 
{ 
    if (input == word.substring(count, count + 1)) 
    { 
    correct++; 
    placeholder = placeholder.substring(0, count) + input + placeholder.substring(count + 1, placeholder.length + 1); 
    document.getElementById("placeholder").innerHTML = placeholder; 
    } 
} 

下面是鏈接到代碼的HTML;

<div style="text-align: center;"> 
    <h1>Hangman</h1> 
    <img id="hangimage" src="http://fetlar.kingston.ac.uk/pp/hangman9.jpg" /> 
    <div id="placeholder" style="font-size: 1.5em; font-family: monotype; color: red;">-------</div> 
    <div id="gamestatus">Game running</div> 
    <input id="guessinput" type="text" size="1" /> 
    <button id="button">Click to guess</button> 
    <br/> 
    <div>Guessed Letters</div> 
    <div id="guessedletters">(guessed letters will go here)</div> 
</div> 

如果有人能告訴我問題是什麼,那將是偉大的,在此先感謝。

回答

0

2個問題在這裏:

首先,你的字變量是全球性的,所以不要重新定義它在你的newGame()功能

var word = wordsArray[Math.floor(Math.random() * wordsArray.length)]; 

應該

word = wordsArray[Math.floor(Math.random() * wordsArray.length)]; 

第二問題在這裏:

wordLength = currentWord.length; 

應該

wordLength = word.length; 

下面是經編輯的jsfiddle:

http://jsfiddle.net/vj2rx/

+0

感謝這麼多整個程序現在完美:) – 2013-04-20 12:25:06

+0

對不起,我遇到了一個問題,這與你的編輯無關,但是當我使用currentWord變量時,它消除了隨機字生成器,只使用第一個字當我把它拿出來的時候是「監視器」的數組我也有原始問題嗎?乾杯 – 2013-04-20 13:14:13

+0

因爲這條線沒有意義:word = wordsArray [currentWord];你只需使用random()函數得到一個單詞,然後將單詞值設置爲數組的第一個值......爲什麼要這樣做?刪除這一行。 – 2013-04-21 13:00:32

0

在這裏你去,這是工作的代碼爲您服務。

var wordsArray = ["monitor", "program", "application", "keyboard", "javascript", "gaming", "network"]; 
var word; 
var goesLeft; 
var placeholder; 
var input; 
var wordLength; 
var currentWord; 

    function newGame(){ 
    placeholder = ""; 
    goesLeft = 10; 
    word = wordsArray[getRandom(0,wordsArray.length)]; 
    wordLength = word.length; 
    console.log(word); 
    var myElement = document.getElementById("button").innerHTML = "Click to guess"; 
    var myPicElement = document.getElementById("hangimage").src = "http://fetlar.kingston.ac.uk/pp/hangman10.jpg"; 

    for (var count = 0; count < word.length; count++) 
    { 
      placeholder = placeholder + "-"; 
    } 

    document.getElementById("placeholder").innerHTML = placeholder; 
    document.getElementById("gamestatus").innerHTML = "Game running"; 
    } 
    function getRandom(min,max){ 
    return Math.floor(Math.random() * (max - min) + min); 
    } 
    function guessLetter() 
    { 
    var correct = 0; 

    var inputBox = document.getElementById("guessinput"); 
    input = inputBox.value; 


    for (var count = 0; count < wordLength; count++) 
    { 
     if (input == word.substring(count, count + 1)) 
     { 
     correct++; 
     placeholder = placeholder.substring(0, count) + input + placeholder.substring(count + 1, placeholder.length + 1); 
     document.getElementById("placeholder").innerHTML = placeholder; 
     } 
    } 

    if (correct == 0) 
    { 
     goesLeft--; 
    } 
    var url = document.getElementById("hangimage").src = "http://fetlar.kingston.ac.uk/pp/hangman" + goesLeft + ".jpg"; 

    if (placeholder == word) 
    { 
     document.getElementById("hangimage").src = "http://fetlar.kingston.ac.uk/pp/hangman_win.jpg"; 
     alert("You guessed the word correctly. You win!"); 
    } 

    if (goesLeft == 0) 
    { 
     alert("You lose"); 
     newGame(); 
    } 
    } 
newGame(); 
document.getElementById("button").onclick = guessLetter; 

我建議你應該爲此做一個類,它會更好。

+0

儘管我感謝你只是給我工作代碼,我寧願只想知道我出錯的地方,以及我如何解決它,因爲我什麼都不學,我在我的在uni的第一年,所以我真的想了解一切,它也節省了一些時間哈哈,謝謝 – 2013-04-20 13:19:52

+0

好吧,我會編輯你的代碼,並做出評論,除了它出錯的地方。 – 2013-04-20 15:04:33

+0

發生了什麼事。你爲什麼不接受答案?任何問題? – 2013-04-22 09:13:12

相關問題