2014-02-07 2 views
1

Я делаю простой 1 - 10 угадывают номер игры с Javascript.
Его можно посмотреть здесь Guessing game

Чтобы сложить счет у меня есть var score = 4, которые де-приращений каждый раз, когда число угадали (с for цикла, который меньше 5) неверно. I += до var tally и отобразите tally в качестве оценки.
Моя проблема score всегда равна 0 и поэтому ничего не добавляет к подсчету, я изо всех сил пытаюсь найти решение.
Мой браузер:Угадайте, игра номер, счетчик счетчика, дающий неправильный результат

var tally; 
function play() { 

    var compNum = (Math.random() * 10).toFixed(0); 
    var score = 4; 
    for (var i = 0; i < 4; i++) { 

     if (i == 0) { 
      var userNum = prompt("Enter a number between 1 and 10"); 
     } else { 
      if (userNum < compNum) { 
       userNum = prompt("Guess higher, you have " + (4 - i) + " turns left ", userNum); 
      } else if (userNum > compNum) { 
       userNum = prompt("Guess lower you have " + (4 - i) + " turns left ", userNum); 
      } 
     } 
     score--; 

    } 

    tally += score; 
    $("#score").html("score: " + tally); 


    if (i >= 3 && userNum != compNum) { 
     var again = confirm("Sorry you lost. The number was: " + compNum + " Play again?"); 
    } else if (userNum == compNum) { 
     again = confirm("Well done! play again?"); 
     i <= 5; 
    } 
    if (again) { 
     play(); 
    } 
    if (userNum == "") { 
     i <= 5; 
    } 


} 

HTML:

<button onclick="play()">PLAY</button> 
<div id="score"></div> 

Ваша помощь очень ценится

+1

Что такое 'i <= 5;' предполагается делать? Должен ли быть декремент? – SmokeyPHP

+0

@SmokeyPHP, так что цикл 'for' не повторяется, когда ответ правильный. есть ли лучший способ сделать это? –

+0

Вы, кажется, даже не проверяете, имеет ли пользователь правильный ответ в вашем цикле. Вам нужно проверить и выйти из цикла, если у них есть правильный ответ с 'break'. В противном случае ваш цикл будет всегда выполняться до завершения, а 'score' всегда будет 0. –

ответ

0

Вы должны проверить, является ли введенное число с использованием равно случайную и, если это это выход из формы для цикла for. С вашим кодом цикл работает целых 4 раза,

+0

И я просто показываю, что точно такой же ответ был задан прямо ... – user3284735

+0

И я покажу, что ваш ответ в основном такой же, как и мой комментарий, который я сделал до того, как я добавил свой ответ * с * кодом и перед вашим ответом. –

+0

Я знаю, что это на самом деле тот же ответ. Я не читал ответы до того, как я опубликовал их. Извини чувак, – user3284735

0

В вашей петле вы должны проверить, имеет ли пользователь правильный ответ и выйти из цикла, если они это сделают.

for (var i = 0; i < 4; i++) { 

    if (i == 0) { 
     var userNum = +prompt("Enter a number between 1 and 10"); 
    } else { 
     if (userNum < compNum) { 
      userNum = prompt("Guess higher, you have " + (4 - i) + " turns left ", userNum); 
     } else if (userNum > compNum) { 
      userNum = prompt("Guess lower you have " + (4 - i) + " turns left ", userNum); 
     } 
    } 
    if (userNum === compNum) { 
     // they guessed right, so exit the loop 
     break; 
    } 
    score--; 

} 

Кроме того, я бы проверить, если isNaN(userNum), чтобы проверить ваш пользователь фактически ввели номер. Это зависит от вас, если вы хотите дать им еще один шанс, если они этого не сделают.

Смежные вопросы