Bonjours tout le monde,
J'ai un petit problème avec mon futur !
En effet j'ai crée deux programme :
- le premier correspond a l'intro, c'est une action qui ce fait automatiquement au début du programme
- le deuxieme correspond au jeu en lui meme
J'aimerai pouvoir les reunir en un seul programme de telle sorte que lorsque l'action du premier programme (l'intro) se termine je puise commencer a jouer.
Je pense qu'il faut une boucle while ou if mais je n'arrive pas a la mettre en place !
Si quelqu'un a la solution merci !!
L'intro :
Clo monClo = new Clo(250, -175, color(255)); float b=40 ; float sens=1; PImage ovni; PImage clo; int initial = 1; void setup() { smooth(); //Lissage des dessins size(500, 750); //Taille de la fenêtre ovni = loadImage("OVNI.gif"); clo = loadImage("clo.gif"); } void draw() { background(0, 0, 70); fill(0, 0, 0 , 100); rect(0, 0, 500, 750); fill(250,250,200); ellipse(random(500), random(750) , random(7), random(7)); noStroke(); fill(0); //tant que intial =1 // si y <200 descendre le bonhomme // sinon initial = 0 // si initial =0 monClo.bouge(); monClo.testCollision(); monClo.display(); if ((b>100)||(b<40)) { sens= 0; } imageMode(CENTER); image(ovni,250, 45, b*2, b); b = b + sens; } class Clo { float x; float y; float vitesseX; float vitesseY; color couleur; Clo (float nouvX, float nouvY, color nouvCouleur) { x = nouvX; y = nouvY; couleur = nouvCouleur; vitesseX = 2; vitesseY = 2; } void display() { fill(0); image(clo,x,y,125,200); } void bouge() { y = y + vitesseY; } void testCollision() { //Si la balle touche une mur, elle rebondit if (y > 350 ) { vitesseY = 0; } } }
-
Le jeu :
float x = 250; float y = 350; float vitesseX; float vitesseY; PImage clo; Meteroite maMeteroite = new Meteroite(200, 750); PImage ile; void setup() { smooth(); size(500,750); clo = loadImage("clo.gif"); } void draw() { background(0); fill(0, 0, 0 , 100); rect(0, 0, 500, 750); fill(250,250,200); ellipse(random(500), random(750) , random(7), random(7)); fill(0); if (x > 530) { x=x-555;} if (x < -30) { x=x +555;} if (y > 780) { y=y-785;} if (y < -30) { y=y +785;} keyPressed (); imageMode(CENTER); image(clo,x,y,125,200); ile = loadImage("meteorite.gif"); maMeteroite.bouge(); maMeteroite.testCollision(); maMeteroite.display(); } void keyPressed() { if (key == CODED){ if (keyCode == LEFT) x = x - vitesseX; if (keyCode == RIGHT) x = x + vitesseX; if (keyCode == UP) y = y - vitesseY; if (keyCode == DOWN) y = y + vitesseY; vitesseX = 3; vitesseY = 3; } } class Meteroite { float w; float z; float vitesseW; //AJOUT float vitesseZ; //AJOUT Meteroite (float nouvW, float nouvZ) { w = nouvW; z = nouvZ; vitesseW = -3/2; vitesseZ = -3/2; } } void display() { image(ile,w,z,40,40); } void bouge() { w = w + vitesseW; z = z + vitesseZ; } void testCollision() { if (W > width-40 || w < 0) { vitesseW = vitesseW * -1; } }
Hors ligne
Bonsoir,
J'ai juste mis un boolean intro et un test qui permet d'aiguiller le programme sur le bon code à exécuter :
Clo monClo; Meteroite maMeteroite; float x = 250; float y = 350; float vitesseX; float vitesseY; PImage clo, ovni, ile; boolean intro; float b=40 ; float sens=1; int initial = 1; void setup() { smooth(); size(500, 750); clo = loadImage("clo.gif"); ovni = loadImage("OVNI.gif"); monClo = new Clo(250, -175, color(255)); maMeteroite = new Meteroite(200, 750); intro = true; } void draw() { if (intro) { // Intro background(0, 0, 70); fill(0, 0, 0, 100); rect(0, 0, 500, 750); fill(250, 250, 200); ellipse(random(500), random(750), random(7), random(7)); noStroke(); fill(0); //tant que intial =1 // si y <200 descendre le bonhomme // sinon initial = 0 // si initial =0 monClo.bouge(); monClo.testCollision(); monClo.display(); if ((b>100)||(b<40)) { sens= 0; } imageMode(CENTER); image(ovni, 250, 45, b*2, b); b = b + sens; // intro = flase; // Quand l'intro se termine } else { // Jeu background(0); fill(0, 0, 0, 100); rect(0, 0, 500, 750); fill(250, 250, 200); ellipse(random(500), random(750), random(7), random(7)); fill(0); if (x > 530) { x=x-555; } if (x < -30) { x=x +555; } if (y > 780) { y=y-785; } if (y < -30) { y=y +785; } imageMode(CENTER); image(clo, x, y, 125, 200); ile = loadImage("meteorite.gif"); maMeteroite.bouge(); maMeteroite.testCollision(); maMeteroite.display(); } } void keyPressed() { if (key == CODED) { if (keyCode == LEFT) x = x - vitesseX; if (keyCode == RIGHT) x = x + vitesseX; if (keyCode == UP) y = y - vitesseY; if (keyCode == DOWN) y = y + vitesseY; vitesseX = 3; vitesseY = 3; } } class Meteroite { float w; float z; float vitesseW; //AJOUT float vitesseZ; //AJOUT Meteroite (float nouvW, float nouvZ) { w = nouvW; z = nouvZ; vitesseW = -3/2; vitesseZ = -3/2; } void display() { image(ile, w, z, 40, 40); } void bouge() { w = w + vitesseW; z = z + vitesseZ; } void testCollision() { if (w > width-40 || w < 0) { vitesseW = vitesseW * -1; } } } class Clo { float x; float y; float vitesseX; float vitesseY; color couleur; Clo (float nouvX, float nouvY, color nouvCouleur) { x = nouvX; y = nouvY; couleur = nouvCouleur; vitesseX = 2; vitesseY = 2; } void display() { fill(0); image(clo, x, y, 125, 200); } void bouge() { y = y + vitesseY; } void testCollision() { //Si la balle touche une mur, elle rebondit if (y > 350 ) { vitesseY = 0; } } }
Cependant, deux remarques sur ton code.
Il faut absolument proscrire l'utilisation de variables globalse dans le code des classes.
Evite d'initialiser les instances des classes et des variables avant le setup(), il est préférable de le faire dans celui-ci.
Hors ligne
Merci beaucoup !
J'ai essayer le programme et l'introduction marche très bien mais le jeu ne veut pas commencer.
Faut t'il que je modifie justement quelque chose comme vous me l'avez dis ou est ce autre chose ?
Hors ligne
Tu n'as pas indiqué quand l'intro doit s'arrêter, et je ne peux le tester car il n'y a pas les fichiers images joints.
A la fin de l'intro il faut mettre la variable :
intro = false;
C'est à toi de le faire.
Hors ligne
J'avais essayer de le mettre, l'intro marche mais le jeu non. je vais essayer de le déplacer dans le else.
Merci encore !
Hors ligne
Clo monClo; Meteroite maMeteroite; float x = 250; float y = 350; float vitesseX; float vitesseY; PImage clo, ovni, ile; boolean intro; float b=40 ; float sens=1; int initial = 1; void setup() { smooth(); size(500, 750); clo = loadImage("clo.gif"); ovni = loadImage("OVNI.gif"); monClo = new Clo(250, -175, color(255)); maMeteroite = new Meteroite(200, 750); intro = true; } void draw() { if (intro) { // Intro background(0, 0, 70); fill(0, 0, 0, 100); rect(0, 0, 500, 750); fill(250, 250, 200); ellipse(random(500), random(750), random(7), random(7)); noStroke(); fill(0); //tant que intial =1 // si y <200 descendre le bonhomme // sinon initial = 0 // si initial =0 monClo.bouge(); intro = monClo.testCollision(); monClo.display(); if ((b>100)||(b<40)) { sens= 0; } imageMode(CENTER); image(ovni, 250, 45, b*2, b); b = b + sens; // intro = flase; // Quand l'intro se termine } else { // Jeu background(0); fill(0, 0, 0, 100); rect(0, 0, 500, 750); fill(250, 250, 200); ellipse(random(500), random(750), random(7), random(7)); fill(0); if (x > 530) { x=x-555; } if (x < -30) { x=x +555; } if (y > 780) { y=y-785; } if (y < -30) { y=y +785; } imageMode(CENTER); image(clo, x, y, 125, 200); ile = loadImage("meteorite.gif"); maMeteroite.bouge(); maMeteroite.testCollision(); maMeteroite.display(); } } void keyPressed() { if (key == CODED) { if (keyCode == LEFT) x = x - vitesseX; if (keyCode == RIGHT) x = x + vitesseX; if (keyCode == UP) y = y - vitesseY; if (keyCode == DOWN) y = y + vitesseY; vitesseX = 3; vitesseY = 3; } } class Meteroite { float w; float z; float vitesseW; //AJOUT float vitesseZ; //AJOUT Meteroite (float nouvW, float nouvZ) { w = nouvW; z = nouvZ; vitesseW = -3/2; vitesseZ = -3/2; } void display() { image(ile, w, z, 40, 40); } void bouge() { w = w + vitesseW; z = z + vitesseZ; } void testCollision() { if (w > width-40 || w < 0) { vitesseW = vitesseW * -1; } } } class Clo { float x; float y; float vitesseX; float vitesseY; color couleur; Clo (float nouvX, float nouvY, color nouvCouleur) { x = nouvX; y = nouvY; couleur = nouvCouleur; vitesseX = 2; vitesseY = 2; } void display() { fill(0); image(clo, x, y, 125, 200); } void bouge() { y = y + vitesseY; } boolean testCollision() { //Si la balle touche une mur, elle rebondit if (y > 350 ) { vitesseY = 0; return false; } else { return true; } } }
Hors ligne
Pages: 1