Rajouter des personnages

pour Romain (Rosny-sous-bois)

Alors comme ça tu veux que ton jeu soit peuplé de plein de types de personnage ? Très bonne idée ! Mais pour pouvoir les placer il va te falloir faire le hack pour modifier ton niveau et pour rajouter des images. Si tu l'as déjà fait, alors passons à la suite !

Placer les nouveaux personnages

Puisque tu as déjà modifié ton niveau, retourne dans le script level.js, et retrouve la fonction levelEditor(), puis rajoute tes nouveaux personnages 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.

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 , 1 , 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 = ennemi 3
  
  */
  
  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 cette ligne.

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( enemys , new enemy( p , 2 , false ) );
  
}

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 ennemi de type 2, les précédents ennemis étaient de type 0 et 1, j'ai donc choisi de créer un nouveau type, le type 2. Libre à toi d'en créer d'autres !

Si tu veux que ton nouveau personnage apparaisse à dans ton jeu en flottant en l'air, remplace le false par true.

Donner une image à tes nouveaux personnages

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

Dans le script enemy.js, trouve la fonction enemyImage() et ajoutes-y ces deux lignes.

function enemyImage(thisEnemy,r){

  // affiche les objets
    
  let type = thisEnemy.type;
  let img  = [ lee ] ;
  let face = (r%2==0) ;
  
  if (type == 0 &&  face) img = enemyImages[0];
  if (type == 0 && !face) img = enemyImages[1];
  
  if (type == 1 &&  face) img = enemyImages[2];
  if (type == 1 && !face) img = enemyImages[3];
  
if (type == 2 && face) img = enemyImages[4]; if (type == 2 && !face) img = enemyImages[5];
return img ; }

Remplace ensuite les 2 le type de personnage que tu as choisi, puis les 4 et 5 dans enemyImages[4] et enemyImages[5] par le numéro des images du personnag de face et de profil dans la liste enemyImages (voir ajouter des images)

Et voilà. Il ne te reste plus qu'à aller rencontrer ton nouveau personnage dans ton niveau.