NSI,JS et jeu du Taquin

On considère le html suivant :

<!DOCTYPE html>
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <link rel="stylesheet" href="style.css">
  <title>Taquin</title>

</head>
<body>
<div id="plateau">
<img src="images/vide.png">
<img src="images/vide.png">
<img src="images/vide.png">
<img src="images/vide.png">
<img src="images/vide.png">
<img src="images/vide.png">
<img src="images/vide.png">
<img src="images/vide.png">
<img src="images/vide.png">
<img src="images/vide.png">
<img src="images/vide.png">
<img src="images/vide.png">
<img src="images/vide.png">
<img src="images/vide.png">
<img src="images/vide.png">
<img src="images/vide.png">
</div>
    </body>
<script src="script.js"></script>
	</html>

Le Css

#plateau {
    width: 33%;
    margin-left: 33%;
    margin-top:50px;
	font-size: 30px;
	color : rgb(62, 158, 191);
}

#regle {
	margin-bottom: 50px;
}

img {
    width: 21%;
    border-color: black;
    border-width: 2px;
    border-style: double;
}

et le .js à compléter :

// on declare la disposition initiale du taquin
var taquin=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,"V"];

// on recupere la liste des images
var toutes_mes_images=............................;

// on attribue une id à chaque image
// correspondant à son index
// on parcourt la liste par index
for (var i=0;i<=.......;i++){
    var mon_image=toutes_mes_images[i];
// on utilise la métdode toString() pour transformer un int en str
	mon_image.id=i.toString();
       
    }
// on attribue à chaque image la source
// correspondant à la valeur correspondante
// dans le tableau taquin
for (var i=0;i<=15;i++){
    var mon_image=toutes_mes_images[i];
	if (taquin[i]==............){
        mon_image.src="images/vide.png";
    }
    else {
       var  n=i+1; 
        mon_image.src="images/"+taquin[i]+".png";
       
    }
}
// on place un ecouteur d'événement mousedown sur chaque image
// appelant la fonction on_bouge()

for (var i=0;i<=15;i++){
    ...............................;
   ................................;
}

function on_bouge(evt){
    // on recupere l'id de l'image sur laquelle on a cliqué en la convertissant en int
    let id_image=parseInt(......................);
    // on recupere sa source
    let source_image=......................);
   
    // on cherche si la case vide est au dessus
    if (id_image>3){
        let n_image_en_dessous=(id_image-4).toString();
        
        if (document.getElementById(n_image_en_dessous).getAttribute("src")=="images/vide.png"){
            this.src="images/vide.png";
            document.getElementById(n_image_en_dessous).src=source_image;
                                    }
    }
    // On cherche si la case vide est en dessous
    if (id_image<12){
        let n_image_au_dessus=(id_image+4).toString();
        
        if (document.getElementById(n_image_au_dessus).getAttribute("src")=="images/vide.png"){
            this.src="images/vide.png";
            document.getElementById(n_image_au_dessus).src=source_image;
                                    }
    }
    // on cherche si la case vide est à gauche
    if (id_image%4!=0){
        let n_image_a_gauche=(id_image-1).toString();
        
        if (document.getElementById(n_image_a_gauche).getAttribute("src")=="images/vide.png"){
            this.src="images/vide.png";
            document.getElementById(n_image_a_gauche).src=source_image;
                                    }
    }
    // on cherche si la case vide est à droite
    if ((id_image+1)%4!=0){
        let n_image_a_droite=(id_image+1).toString();
        
        if (document.getElementById(n_image_a_droite).getAttribute("src")=="images/vide.png"){
            this.src="images/vide.png";
            document.getElementById(n_image_a_droite).src=source_image;
                                    }
    }
                                    
}

et les images :