我正在創建一個新的「whack-a-mole」風格的遊戲,孩子們必須根據問題點擊正確的數字。到目前爲止,它確實發展得很好,我有一個計時器,計算正確和錯誤的答案,當遊戲開始時,我有一些名爲「字符」的div在設定的時間隨機出現在容器中。隨機映射div
我遇到的問題是,因爲它是完全隨機的,有時候「字符」會出現重疊。有沒有辦法將它們組織起來,以便它們出現在容器中的設置位置,並在出現時不重疊。
在這裏我有一個的div映射到容器中的代碼..
function randomFromTo(from, to) {
return Math.floor(Math.random() * (to - from + 1) + from);
}
function scramble() {
var children = $('#container').children();
var randomId = randomFromTo(1, children.length);
moveRandom('char' + randomId);
}
function moveRandom(id) {
var cPos = $('#container').offset();
var cHeight = $('#container').height();
var cWidth = $('#container').width();
var pad = parseInt($('#container').css('padding-top').replace('px', ''));
var bHeight = $('#' + id).height();
var bWidth = $('#' + id).width();
maxY = cPos.top + cHeight - bHeight - pad;
maxX = cPos.left + cWidth - bWidth - pad;
minY = cPos.top + pad;
minX = cPos.left + pad;
newY = randomFromTo(minY, maxY);
newX = randomFromTo(minX, maxX);
$('#' + id).css({
top: newY,
left: newX
}).fadeIn(100, function() {
setTimeout(function() {
$('#' + id).fadeOut(100);
window.cont++;
}, 1000);
});
我有一個小提琴如果有幫助.. http://jsfiddle.net/pUwKb/8/
您可以創建對象,您可以存儲位置的數組,即'[{頂:300, left:200},{top:100,left:400}]'並從數組中隨機獲取座標。當位置正在使用時,您還可以添加一個標誌,以便它們不會重疊。我認爲這是最快的方法之一 – Eru
您所要做的只是保留當前正在覆蓋哪些區域的生活清單,並檢查重疊。如果你創建了一個棋盤式的網格,這樣就不會出現局部重疊的情況,這將特別容易。 – theJollySin
這是一個非常酷的遊戲。不過,我想我可能遇到了一個錯誤 - 我得到了2 + 6的問題,並點擊了8個錯誤的答案。另外,一個建議:我會做出一個規則,正確的答案將始終出現在X循環內。如果程序經過10次或20次迭代而沒有顯示出來,坐下並等待正確答案彈出可能有點令人沮喪。 – AmericanUmlaut