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
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
Dernière modification par Kikikc (2016-04-13 19:26:58)
Hors ligne
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