Comme faire bouger une carte et un sprite?

General

Martisse

NEW 5 years ago

Steph Steph

Ok. Je ferai ça ce soir. Car j'ai des horaires de pc.

Martisse

NEW 5 years ago

Voici le code que j'ai fait. il est commenté;Voici ce que j'ai voulu faire : lorsque le personnage va a droite, la carte va a gauche et inversement...

https://gist.github.com/Martisse/15547028ebf1a4b6a5a88aaf5cdb3288

Codnpix

5 years ago

Sympatique petit univers :) !

Voici une proposition très simple de ce que tu pourrais faire, c'est exactement le même principe que mon exemple plus haut :

int positionCamera;
void setup() {
//...
}
void loop() {
  while(!gb.update());
  gb.display.clear();

//ENTREE
if(gb.buttons.repeat(BUTTON_RIGHT, 1)) {  //déplacer personnage a droite
     playerPosition_x = playerPosition_x + 1;  
    //position_carte = position_carte - 1; pas besoin de faire bouger la carte, la position du joueur suffit pour faire le calcul
  }
if(gb.buttons.repeat(BUTTON_LEFT, 1)) {   //déplacement personnage a gauche
    playerPosition_x = playerPosition_x - 1;
    //position_carte = position_carte + 1;
  }
if(gb.buttons.pressed(BUTTON_B)) {
  arme = 1;
}

  //calcul positionCamera en fonction de playerPosition_x :

  if(playerPosition_x <= gb.display.width() / 2) positionCamera = 0;//pour que la camera n'aille pas au delà de l'image si le sprite arrive au bord  à gauche
  else if (playerPosition_x >= 200) positionCamera = - 240 + gb.display.width();//même chose pour le bord droit
  else positionCamera = (gb.display.width() / 2) - playerPosition_x;//sinon la camera suit le sprite


  //AFFICHAGE
  gb.display.drawImage(positionCamera, 0, carte_1Data);  //carte
  gb.display.drawImage(positionCamera + playerPosition_x, 40, heroData);  //héroine  //il faut ajouter la position de la camera à celle du joueur pour que la relation soit établie.
  gb.display.drawImage(positionCamera + 60, 40, ennemi_1Data); //ennemi
  gb.display.setColor(BLACK);
  gb.display.fillRect(0,0, 80,7); //carré noir affichant les donneés du jeu
  gb.display.drawImage(2,0,faimData); //barre de faim
  gb.display.drawImage(9,0,faimData); //barre de faim
  gb.display.drawImage(16,0,faimData);  //barre de faim

  gb.display.drawImage(56,0, coeurData);  //coeur
  gb.display.drawImage(64,0, coeurData);  //coeur
  gb.display.drawImage(72,0, coeurData);  //coeur
  gb.display.setCursor(31,1);
  gb.display.print("epee"); //type d'arme
}

Codnpix

NEW 5 years ago

Martisse Martisse

Sympatique petit univers :) !

Voici une proposition très simple de ce que tu pourrais faire, c'est exactement le même principe que mon exemple plus haut :

int positionCamera;
void setup() {
//...
}
void loop() {
  while(!gb.update());
  gb.display.clear();

//ENTREE
if(gb.buttons.repeat(BUTTON_RIGHT, 1)) {  //déplacer personnage a droite
     playerPosition_x = playerPosition_x + 1;  
    //position_carte = position_carte - 1; pas besoin de faire bouger la carte, la position du joueur suffit pour faire le calcul
  }
if(gb.buttons.repeat(BUTTON_LEFT, 1)) {   //déplacement personnage a gauche
    playerPosition_x = playerPosition_x - 1;
    //position_carte = position_carte + 1;
  }
if(gb.buttons.pressed(BUTTON_B)) {
  arme = 1;
}

  //calcul positionCamera en fonction de playerPosition_x :

  if(playerPosition_x <= gb.display.width() / 2) positionCamera = 0;//pour que la camera n'aille pas au delà de l'image si le sprite arrive au bord  à gauche
  else if (playerPosition_x >= 200) positionCamera = - 240 + gb.display.width();//même chose pour le bord droit
  else positionCamera = (gb.display.width() / 2) - playerPosition_x;//sinon la camera suit le sprite


  //AFFICHAGE
  gb.display.drawImage(positionCamera, 0, carte_1Data);  //carte
  gb.display.drawImage(positionCamera + playerPosition_x, 40, heroData);  //héroine  //il faut ajouter la position de la camera à celle du joueur pour que la relation soit établie.
  gb.display.drawImage(positionCamera + 60, 40, ennemi_1Data); //ennemi
  gb.display.setColor(BLACK);
  gb.display.fillRect(0,0, 80,7); //carré noir affichant les donneés du jeu
  gb.display.drawImage(2,0,faimData); //barre de faim
  gb.display.drawImage(9,0,faimData); //barre de faim
  gb.display.drawImage(16,0,faimData);  //barre de faim

  gb.display.drawImage(56,0, coeurData);  //coeur
  gb.display.drawImage(64,0, coeurData);  //coeur
  gb.display.drawImage(72,0, coeurData);  //coeur
  gb.display.setCursor(31,1);
  gb.display.print("epee"); //type d'arme
}

Steph

5 years ago

Arf... avec le décalage horaire, tu m'as devancé (j'suis allé me coucher + tôt que toi !).

Bon, ben il semble que le pbm soit résolu :-)

Martisse

5 years ago

Merci beaucoup c'est exactement ce que je cherchais. :)

Steph

NEW 5 years ago

Codnpix Codnpix

Arf... avec le décalage horaire, tu m'as devancé (j'suis allé me coucher + tôt que toi !).

Bon, ben il semble que le pbm soit résolu :-)

Martisse

NEW 5 years ago

Codnpix Codnpix

Merci beaucoup c'est exactement ce que je cherchais. :)