evg

Пятнашки

2 5 4 6
1 13 11 3
14 12 7 10
8 15 9 0

<style>
  #tbl td{text-align:center;width:40px;height:40px;}
  #tbl td:hover{background:#eee;}
  #steps{width:700px;}
</style>
<table border=1 id='tbl'><tr><td>2</td> <td>5</td> <td>4</td> <td>6</td> </tr>
<tr><td>1</td> <td>13</td> <td>11</td> <td>3</td></tr>
<tr><td>14</td> <td>12</td> <td>7</td> <td>10</td></tr>
<tr><td>8<</td> <td>15</td> <td>9</td> <td>0</td></tr></table>
<div id='steps'></div>

<script>
var tbl=[];
var steps=0;
  var result='';
  
function gettable(t)
{
    var tf=$('#'+t+' td');
    
    for(var i=0;i<tf.length;i++){
        tbl[i]=parseInt(tf[i].innerHTML);
    }
}

function settable(t)
{
  	var r = true;
    var tf=$('#'+t+' td');
    for(var i=0;i<tf.length;i++){
       tf[i].innerHTML=tbl[i];
      if(tbl[i]-1 != i && i !=15) r = false;
    }    
  if(r)alert('Решение найдено! Поздравляем!');
}

function settableclick(t)
{
    var tf=$('#'+t+' td');
    for(var i=0;i<tf.length;i++){
        $(tf[i]).click({i:i},function(eo){change(eo.data.i);});
    }    
}

function change(t){
    if(((t - 1) % 4 >= 0) &&((t - 1) % 4 < 3)) { if (tbl[t-1]==0) {tbl[t-1]=tbl[t];tbl[t]=0;result+='R ';steps++;}}
    if(((t + 1) % 4 > 0) &&((t + 1) % 4 <= 3)) { if (tbl[t+1]==0) {tbl[t+1]=tbl[t];tbl[t]=0;result+='L ';steps++;}}
    if(t - 4 >= 0) { if (tbl[t-4]==0) {tbl[t-4]=tbl[t];tbl[t]=0;result+='D ';steps++;}}
    if(t + 4 <= 15) { if (tbl[t+4]==0) {tbl[t+4]=tbl[t];tbl[t]=0;result+='U ';steps++;}}
    settable('tbl');
  
  $('#steps').text('Количество ходов: '+steps+' Перемещения пустой клетки(0): '+result);
}

gettable('tbl');
settableclick('tbl');

</script>

Коментарии