Rajouter des objets

Alors comme ça tu veux rajouter d'autres objets dans ton jeu ? Tu as bien raison ! Mais pour pouvoir les placer il va te falloir faire les hacks pour modifier ton niveau et pour rajouter des images. Si tu as déjà fait tout ça, alors passons à la suite !

Placer les nouveaux objets

Puisque tu as déjà modifié ton niveau, retourne dans le script level.js, dans la fonction levelEditor(), et rajoute tes nouveaux objets avec de nouveaux nombres que tu n'as pas encore utilisés, comme 9, 10 ou 11. Par exemple, ici j'ai choisi le 9 et le 10.

function levelEditor() {
  
  // cette fonction initialise les couloirs et les éléments du niveau
              
  let grid = [ 
                
    [ 7 , 1 , 1 , 1 , 1 , 1 , 1 , 8 ], 
    [ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ], 
    [ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ], 
    [ 1 , 2 , 1 , 3 , 1 ,9, 1 , 1 ], 
    [ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ], 
    [ 1 , 1 ,9, 1 , 1 ,9, 1 , 1 ], 
    [ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ], 
    [ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ], 
                
  ];
              
  /*
              
    0 = mur
    1 = passage
    2 = ennemi 1
    3 = ennemi 2
    4 = objet 1
    5 = objet 2
    6 = objet 3
    7 = départ
    8 = trésor
    
    9 = nouvel objet
              
  */
              
  return grid ;
            
}

Maintenant que tu as défini l'emplacement des nombres, il va falloir expliquer à ton programme à quoi ils correspondent. Dans le même script, trouve la fonction placeItem(). C'est elle qui affecte un élément à chaque emplacement que tu as défini. Rajoutes-y une ligne qui demande de placer un objet aux endroits où tu as mis ton nouveau nombre, comme celle-ci.

function placeItem( n , x , y ){
  
  // place les éléments
  
  let p = createVector(x,y);
  let b = isFloating;
  
  if (n==0) rooms[x][y].path=false; // passages
  if (n==1) rooms[x][y].path=true; // passages
  if (n==2) append( enemys , new enemy( p , 0 , b[0] ) ); // ennemi 1
  if (n==3) append( enemys , new enemy( p , 1 , b[1] ) ); // ennemi 2
  if (n==4) append( items ,  new item ( p , 1 ) ); // objet 1
  if (n==5) append( items ,  new item ( p , 2 ) ); // objet 2
  if (n==6) append( items ,  new item ( p , 3 ) ); // objet 3
  if (n==7) playerPos=[ p , p ]; // départ
  if (n==8) append( items ,  new item ( p , 0 ) ); // trésor

  if (n==9) append( items, new item ( p , 4 ) );
  
}

N'oublie pas de remplacer le 9, par le nombre que tu as choisi.

Tu remarqueras que dans la ligne j'ai demandé de créer un objet de type 4, les précédents objets étaient de type 0, 1, 2 et 3, j'ai donc choisi de créer un nouveau type, le type 4, libre à toi d'en créer d'autres !

Donner une image à tes nouveaux objets

Maintenant j'imagine que tu aimerais que ton objet ait une autre apparence que les précédents. Il va donc falloir demander à ton programme de l'afficher différemment.

Dans le script item.js, trouve la fonction itemImage() et rajoutes-y cette ligne.

function itemImage(thisItem){

  // affiche les objets
    
  let type = thisItem.type;
  let img = [ lee ] ;

  if  ( type == 0 ) img = itemImages[0] ;
  if  ( type == 1 ) img = itemImages[1] ;
  if  ( type == 2 ) img = itemImages[2] ;
  if  ( type == 3 ) img = itemImages[3] ;
  
  if  ( type == 4 ) img = itemImages[4] ;
  
  return img ;
  
}

Remplace ensuite le 4 dans la condition if ( type == 4 ) par le type de ton objet puis, remplace le 4 dans itemImages[4] par le numéro de ton image dans la liste itemImages (voir ajouter des images).

Donner une fonction à tes nouveaux objets

Pour finir, comment ton joueur pourra t-il intéragir avec ton nouvel objet ? Par défault ton objet bloquera le passage du joueur, si tu veux que ton joueur interagisse avec autrement va dans la fonction pick(), toujours dans le script item.js, puis ajoutes cette ligne en dessous des autres.

function pick( thisItem ){

  // interaction du joueur avec les objets

  // ici c'est l'objet 3 qui appellera la fonction trap()
  
  let objet = thisItem.type ;

  if ( objet == 0 ) treasure( thisItem ) ;
  if ( objet == 1 ) pickItem( thisItem ) ;
  if ( objet == 2 ) pickItem( thisItem ) ;
  if ( objet == 3 ) pickItem( thisItem ) ;

  if ( objet == 4 ) pickItem( thisItem ) ;
  
}

Remplace ensuite le 4 par le type de ton objet. Ton joueur peut maintenant ramasser l'objet et l'ajouter dans son inventaire.

Tu aimerais que ton objet déclenche un effet que tu as créé avec un autre hack ? Remplace alors pickItem( thisItem ) par la fonction de ton choix.