Sélectioner un objet dans son inventaire

Avec ce hack, ton joueur pourra sélectionner un objet parmi son inventaire.

Créer la variable selectedItem

Pour commencer crée une nouvelle variable publique dans le script item.js en collant cette ligne, en dehors d'une fonction.

let selectedItem ;

Puis dans le script game.js, modifie la fonction initGame() pour que l'objet sélectionné par le joueur soit toujours le premier dans son inventaire par défaut.

function initGame(){
  
  musics[5].stop();

  selectedItem = 0 ;
  
  title  = false;
  win    = false;
  credit = false;
  thanks = false;
  
  touchDir = null;
  
  playerR = [ 0 , 0 ];
  
  playerLevel();
  
}

Créer une animation

Rajoutons une petite animation pour que le joueur puisse distinguer quel objet est sélectionné. Pour ça, colle dans le script item.js cette nouvelle fonction je te t'ai préparé.

function selectedItemDisplay(){ // anime l'objet séléctionné const vitesse = 0.01 ; const amplitude = 0.1 ; const taille = 1.2 ; rotate( sin( millis() * vitesse ) * amplitude ); scale( taille ); }

Ensuite, pour déclencher cette nouvelle animation, ajoutes cette ligne dans la fonction inventoryDisplay(), toujours dans le script item.js.

function inventoryDisplay(){
  
  // affiche l'inventaire du joueur
  
  if( onHand != null ){
    
    let w = height*0.1;
    let x = height*0.02;
    let y = height*0.05;
    let l = onHand.length;
    
    for( let i = 0 ; i < l ; i ++ ){ 
      
      let img = itemImage(onHand[i]);
        
      let p = width/2 - w/2 + (w+x)*i - ((l-1) * (w+x))/2;
        
      push();
      translate(p+w/2,height-y-w);
      
      if (selectedItem == i) selectedItemDisplay();
      
      image(img[0],0,0,w,w);
      pop();
        
    }    
  }   
}

Créer une interaction

Maintenant il ne nous reste plus qu'à permettre à ton joueur de choisir un autre objet dans son inventaire. Pour ça je te propose d'utiliser la touches 'espace' ou la touche 'entrée'. Avec les deux fonctions suivantes le joueur pourra utiliser l'une ou l'autre. Rajoute-les quelque part dans le script control.js.

function keyPressed() { // est lue une fois lorsque le joueur appuie sur une touche if ( keyIsDown(32) || keyIsDown(10) ) inventoryControl(1); }
function inventoryControl(p) { // cette fonction modifie la valeur de selectedItem let l = onHand.length; if ( onHand.length > 0) selectedItem = ( selectedItem + l + p ) % l ; }

Ton joueur peut maintenant choisir un objet dans son inventaire ! Il ne nous reste plus qu'à pouvoir vérifier simplement si le joueur à sélectionné un certain type d'objet. Pour ça je t'ai écrit une petite fonction que tu peux rajouter dans ton script item.js

function isItemSelected( n ) { // cette vérifie si un certain type d'objet est selectioné par le joueur return ( onHand.length > 0 && onHand[selectedItem].type == n ); }

Voilà, tu n'as plus qu'à utiliser cette condition dans ton programme pour donner à un de tes objets un rôle particulier.

if ( isItemSelected( 1 ) ) // pour l'objet 1
if ( isItemSelected( 2 ) ) // pour l'objet 2
if ( isItemSelected( 3 ) ) // pour l'objet 3