8 - 16 puzzle
by XcsN
JavaScript
var paper = Raphael(0, 0, 1200, 2500);
var tiles = 3,
selected = 0,
counter = 1,
threshold = 1,
willBeSelected = 1,
matrix = new Array(),
info = new Array(),
start=[[2,4,3],[1,8,5],[7,0,6]],
//start=[[2,4,3],[1,8,5],[7,0,6]],
//start=[[0,2,3],[1,4,5],[7,8,6]],
//[[5,2,4,8],[10,0,3,14],[13,6,11,12],[1,15,9,7]],
//start = [[5, 1, 7, 3], [9, 2, 11, 4], [13, 6, 15, 8], [0, 10, 14, 12]],
//start=[[5,1,7,3],[9,2,11,4],[13,6,15,8],[0,10,14,12]],
end = new Array();
//////start ve end al///////
for (var x = 0; x < tiles; x++) {
end[x] = new Array();
for (var y = 0; y < tiles; y++) {
end[x][y] = counter;
counter++;
}
}
end[tiles-1][tiles-1] = 0;
/*for(var x=0;x<tiles;x++)
for(var y=0;y<tiles;y++)
paper.text(100+y*15,100+x*15,end[x][y])*/
counter = 0;
function first_step() {
matrix[0] = new Array();
info[0] = new Array();
for (var x = 0; x < tiles; x++)
matrix[0][x] = new Array();
for (var x = 0; x < tiles; x++)
for (var y = 0; y < tiles; y++)
matrix[0][x][y] = start[x][y];
distance();
info[0][1] = 0;
info[0][2] = 0;
for (var x = 0; x < tiles; x++)
for (var y = 0; y < tiles; y++)
if (matrix[0][x][y] == 0) {
info[0][3] = x;
info[0][4] = y;
break;
}
info[0][5] = 1;
info[0][6] = -1;
counter++;
}
function distance() {
var backup = tiles * tiles - 1;
for (var x = 0; x < tiles; x++)
for (var y = 0; y < tiles; y++)
if (matrix[counter][x][y] == end[x][y] && end[x][y] != 0) backup--;
info[counter][0] = backup;
}
function move_tile(side) {
info[counter] = new Array();
matrix[counter] = new Array();
for (var x = 0; x < tiles; x++)
matrix[counter][x] = new Array();
for (var x = 0; x < tiles; x++)
for (var y = 0; y < tiles; y++)
matrix[counter][x][y] = start[x][y];
for (var x = 0; x < tiles; x++)
for (var y = 0; y < tiles; y++)
...