這作業得很好,但我想知道,在這里我只檢查最近的用戶輸入值(及其索引號)和隨機生成的值及其長度,但是如何檢查以前的值?
假設用戶輸入值為 a=[red,blue,green]
并且隨機生成的值為 b=[red,yellow,green]
然后在這里我只檢查在這種情況下相等的 a[2] 和 b[2] 并且它們的長度相等但它們的元素不相等。
但在這段代碼中,它完美地作業。我想知道怎么做?如果沒有 for 回圈,這段代碼如何檢查該陣列的先前值?
..................................****************........ ……………………………………………………………………………………………………………………
var buttonColours = ["red", "blue", "green", "yellow"];
var gamePattern = [];
var userClickedPattern = [];
var started = false;
var level = 0;
$(document).keypress(function() {
if (!started) {
$("#level-title").text("Level " level);
nextSequence();
started = true;
}
});
$(".btn").click(function() {
var userChosenColour = $(this).attr("id");
userClickedPattern.push(userChosenColour);
playSound(userChosenColour);
animatePress(userChosenColour);
checkAnswer(userClickedPattern.length-1);
});
function checkAnswer(currentLevel) {
if (gamePattern[currentLevel] === userClickedPattern[currentLevel]) {
if (userClickedPattern.length === gamePattern.length){
setTimeout(function () {
nextSequence();
}, 1000);
}
} else {
playSound("wrong");
$("body").addClass("game-over");
$("#level-title").text("Game Over, Press Any Key to Restart");
setTimeout(function () {
$("body").removeClass("game-over");
}, 200);
startOver();
}
}
function nextSequence() {
userClickedPattern = [];
level ;
$("#level-title").text("Level " level);
var randomNumber = Math.floor(Math.random() * 4);
var randomChosenColour = buttonColours[randomNumber];
gamePattern.push(randomChosenColour);
$("#" randomChosenColour).fadeIn(100).fadeOut(100).fadeIn(100);
playSound(randomChosenColour);
}
function animatePress(currentColor) {
$("#" currentColor).addClass("pressed");
setTimeout(function () {
$("#" currentColor).removeClass("pressed");
}, 100);
}
function playSound(name) {
var audio = new Audio("sounds/" name ".mp3");
audio.play();
}
function startOver() {
level = 0;
gamePattern = [];
started = false;
}
uj5u.com熱心網友回復:
在下面的代碼中,您可以看到當用戶單擊按鈕時,它會呼叫帶有userClickedPattern.length - 1for 級別的 checkAnswer。
$(".btn").click(function() {
var userChosenColour = $(this).attr("id");
userClickedPattern.push(userChosenColour);
playSound(userChosenColour);
animatePress(userChosenColour);
checkAnswer(userClickedPattern.length-1);
});
當新序列開始時, userClickedPattern 設定為[]。第一次單擊后,它變為['red']并檢查是否userClickedPattern[0] // ['red']等于gamePattern[0] // ['red', 'yellow', 'green']。它一直持續到 userClickedPattern.length === gamePattern.length 并且用戶每次 checkAnswer 都成功完成(失敗將觸發startOver并重置游戲)
當用戶單擊時,您實際上是在運行時檢查所有值。陣列長度檢查僅檢測用戶是否已完成關卡。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/518644.html
上一篇:Double.NaN在Windows11中導致System.StackOverflowException(22621.525)
