Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2016-04-13 16:08:36 Ramasser une pièce

Kikikc
nouveau membre
Date d'inscription: 2016-04-13
Messages: 1

Ramasser une pièce



Bonjour/Bonsoir,
Alors voilà, je réalise un petit jeu de plateforme en 2D sous processing. Le but c'est qu’un personnage fixe sur l’axe des ‘x’(situé à gauche de l'écran) doit esquiver des objets qui lui arrive dessus, via un scrolling automatique, en sautant ou en se baissant.
J'y est donc ajouter un système de vie et de pièce : une collision avec un objet fait perdre une vie et récupéré X pièce permettras d'en gagner une.
J'ai créé une class pour les pièces, et lorsque le personnage s'approche suffisamment de l'une d'entre elle, elle disparait et le jeu compte que je possède une nouvelle pièce.

Admettons que je touche un objet, le niveau redémarre depuis le début et es obstacles reprennent bien leurs positions initiales.
Mon problème est que je n’arrive pas à redonner aux pièces leur position initial.
Je pense que j’y prend mal, pourriez-vous m’aider ?

Voilà un extrait de mon code :
Si je n’ai pas été assez claire où qu’il vous faille mon code en intégral, n’hésitez pas a me faire signe wink
Merci

citation :

PImage[] coin = new PImage[10];
Coins[] coins= new Coins[50];
[...]
void setup(){
  coins[0]= new Coins(400, -344);
  coins[1]= new Coins(877, -200);
[...]
coin[0]  = loadImage("coin0.png");
  coin[1]  = loadImage("coin1.png");
  coin[2]  = loadImage("coin2.png");
  coin[3]  = loadImage("coin3.png");
  coin[4]  = loadImage("coin4.png");
  coin[5]  = loadImage("coin5.png");
  coin[6]  = loadImage("coin6.png");
  coin[7]  = loadImage("coin7.png");
  coin[8]  = loadImage("coin8.png");
  coin[9]  = loadImage("coin9.png");
}
[...]
void draw(){
posx = posx + vitesseX;
  for (int i = 0; i < 2; i++) {
    coins[i].display();
  }
[...]
if (frameCount % 2 == 0) {                       //animation pieces
    framecoin = (framecoin+1);
    if (framecoin ==9) {
      framecoin = 0;
    }
  } }
[...]
class Coins {

  int xsave;
  int ysave;

  Coins(int x2, int y2) {
    x1=x2;
    y1=y2;
  }
  void display() {
    image(coin[framecoin], (x1+posx), (y1+posy));
    if ((x1+posx) > persx + (106-25) || (x1+posx)+50 < persx || (y1+posy) > persy + 129 || (y1+posy)+50< persy) {
      y1 = y1-1000;
    } else {
      collision();
    }
  }
  void collision() {
    piece++;
    y1= y1-1000;                    // ma tentative pour "supprimer" les pieces récoltées
  }
}

edit: J'ai finalement trouvé une solution. Je stocke les position des pièces dans une fonction, que je rappelle pour chaque collision.
Ca fonctionne mais si vous avez une solution peut-être plus "propre", je suis preneur big_smile

Dernière modification par Kikikc (2016-04-13 19:26:58)

Hors ligne

 

#2 2016-04-13 19:35:42 Re : Ramasser une pièce

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: Ramasser une pièce



Bonjour,

Effectivement ton code complet avec les images serait le bienvenu. Compresse le dossier et joint l'archive dans ton message, nous pourrons ainsi mieux t'aider.

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024