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++)
   ...