#在网上看到这样一串实现拼图游戏的代码,但是未实现打乱图片顺序,要怎么在这代码基础上实现打乱图片顺序哇
<script>
$(document).ready(function () {
var zi = 1;
var EmptySquare = 16;
$.fn.extend({
fifteen:
function (square_size) {
var gameObjectElement = '#' + $(this).attr('id');
var sqSize = square_size + 'px';
var boardSize = (square_size * 4) + 'px';
$(gameObjectElement).html('<div id="board"></div>');
$('#board').css({ position: 'absolute', width: boardSize, height: boardSize, border: '1px solid gray' });
for (var i = 0; i < 16; i++) {
$('#board').append("<div style='left: " + ((i % 4) * square_size) + "px; top: " + Math.floor(i / 4) * square_size + "px; width: " + square_size + "px; height: " + square_size + "px; background-position: " + (-(i % 4) * square_size) + "px " + -Math.floor(i / 4) * square_size + "px '></div>");
}
$('#board').children("div:nth-child(" + EmptySquare + ")").css({ backgroundImage: "", background: "#ffffff" });
$('#board').children('div').click(function () {
Move(this, square_size);
});
}
});
function Move(clicked_square, square_size) {
var movable = false;
var oldx = $('#board').children("div:nth-child(" + EmptySquare + ")").css('left');
var oldy = $('#board').children("div:nth-child(" + EmptySquare + ")").css('top');
var newx = $(clicked_square).css('left');
var newy = $(clicked_square).css('top');
if (oldx == newx && newy == (parseInt(oldy) - square_size) + 'px')
movable = true;
if (oldx == newx && newy == (parseInt(oldy) + square_size) + 'px')
movable = true;
if ((parseInt(oldx) - square_size) + 'px' == newx && newy == oldy)
movable = true;
if ((parseInt(oldx) + square_size) + 'px' == newx && newy == oldy)
movable = true;
if (movable) {
$(clicked_square).css('z-index', zi++);
$(clicked_square).animate({ left: oldx, top: oldy }, 200, function () {
$('#board').children("div:nth-child(" + EmptySquare + ")").css('left', newx);
$('#board').children("div:nth-child(" + EmptySquare + ")").css('top', newy);
});
}
}
$('#game_object').fifteen(175);
$("#start").on('click', function () {
})
});
</script>
$(gameObjectElement).html('<div id="board"></div>');
$('#board').css({ position: 'absolute', width: boardSize, height: boardSize, border: '1px solid gray' });
for (var i = 0; i < 16; i++) {
...
你这里的代码,修改为
$(gameObjectElement).html('<div id="board"></div>');
$('#board').css({ position: 'absolute', width: boardSize, height: boardSize, border: '1px solid gray' });
rnd = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
rnd.sort(randomsort);
for (var j = 0; j < 16; j++) {
var i = rnd[j];
你下面的代码
...
}
...
你需要定义一个函数
function randomsort(a, b) {
return Math.random()>.5 ? -1 : 1;
//用Math.random()函数生成0~1之间的随机数与0.5比较,返回-1或1
}