Я попытаюсь изо всех сил задать этот вопрос без огромной стены кода. В основном я написал очень простую математическую игру. В этой игре вы выбираете сложность, количество вопросов, которые вы хотите, и игра начинается. Он спрашивает, сколько вопросов, а затем вы получаете оценку, а затем игра окончена. Однако вы можете перезапустить игру. Когда вы перезагружаетесь, он просто возвращает вас на главный экран, после чего вы можете снова выбрать свои параметры. Единственная проблема заключается в том, что нам нужно отслеживать количество вопросов, оставшихся в викторине, в первый раз, это хорошо работает. Мы передаем numQuestions
в игру. Во второй раз, однако, даже если я прохожу numQuestions=10
, значение остается 0 с первого раза, когда я играл в игру. Вот игровая функция:переменная не обновляется при перезапуске функции (javascript)
function startGame(difficulty,numQuestions,score){
// begins game, excluded that come its just some acsii art
// asks question
var q = new question(difficulty);
$("#gameInside").html(q.string);
$("#gameInside").data('answer',q.answer);
// gives answer options
for (var ii=0;ii<=3;ii++){
$("#answers").append("<button class='answerButton'>"+q.answerArray[ii]+"</button>")
}
// starts timer
var b = document.getElementById("timer");
timer = new stopWatch(b, {delay: 100});
timer.start();
},5500)
// when answer is clicked, go here
$("#gameScreen").on("click",".answerButton",function() {
// this seems to be the problem: on the second time I play the game, numQuestions remains the value from the first game and continues to go down (-1,-2) and since my selector is (>0), the else statement fires.
numQuestions--;
var time = parseFloat($("#timer span").html());
var correct = parseFloat($("#gameInside").data('answer'));
var userAnswer = parseFloat($(this).html());
if (correct==userAnswer)
tempScore = Math.round(calculateScore(time)*100)/100;
else
tempScore = 0;
score += tempScore;
$("#score").html(Math.round(score*100)/100);
if (numQuestions > 0) {
var q = new question(difficulty);
$("#gameInside").html(q.string);
$("#gameInside").data('answer',q.answer);
$("#answers").empty();
for (var ii=0;ii<=3;ii++){
$("#answers").append("<button class='answerButton'>"+q.answerArray[ii]+"</button>")
}
timer.reset();
} else {
$("#answers").empty();
$("#gameInside").html('Game Over! Thanks for Playing!');
timer.stop();
}
});
}
любые идеи? Благодаря
редактировать:
$(".numberQButton").click(function(){
numQuestions = parseFloat($(this).html());
$("#numQuestionsScreen").hide();
$("#gameScreen").show();
$("#score").html(0);
startGame(difficulty,numQuestions,score);
});
Где вы звоните: startGame? Где определены ваши numQuestions? – AbhinavRanjan
отредактировал: Кажется, что после одной игры он начинает стрелять как правильно, так и неправильно, как будто есть две версии переменной ... Я что-то прикрутил –
Можете ли вы также включить основную структуру html? Это поможет устранить неполадки. –