JSFiddle - React, Tailwind, and code Playground

by uggway

HTML

<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>

JavaScript

var tbl=[];
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 tf=$('#'+t+' td');
    for(var i=0;i<tf.length;i++){
       tf[i].innerHTML=tbl[i];
    }    
}

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 >= 0) { if (tbl[t-1]==0) {tbl[t-1]=tbl[t];tbl[t]=0;}}  
    if(t + 1 <= 15) { if (tbl[t+1]==0) {tbl[t+1]=tbl[t];tbl[t]=0;}}
    if(t - 4 >= 0) { if (tbl[t-4]==0) {tbl[t-4]=tbl[t];tbl[t]=0;}}
    if(t + 4 <= 15) { if (tbl[t+4]==0) {tbl[t+4]=tbl[t];tbl[t]=0;}}
    settable('tbl');
}
gettable('tbl');
settableclick('tbl');