From bf359cf55f492a997b44ac689b26b16f75768372 Mon Sep 17 00:00:00 2001 From: Sticmac Date: Tue, 5 May 2015 21:51:40 +0200 Subject: Original commit --- Robofactor/Robofactor.pde | 159 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 Robofactor/Robofactor.pde (limited to 'Robofactor/Robofactor.pde') diff --git a/Robofactor/Robofactor.pde b/Robofactor/Robofactor.pde new file mode 100644 index 0000000..e1e7ca5 --- /dev/null +++ b/Robofactor/Robofactor.pde @@ -0,0 +1,159 @@ +Heros roboFactor; +Voiture[] voiture = new Voiture[3]; +Boite[] boite = new Boite[2]; +Score score; +PImage img; +PImage backG; +boolean lance; +PImage backMenu; + +float xDecor, xDecorFin; + +int xBlocage = -200; //Les entités se bloquent à une abscisse de -200, en attendant d'être rappellées. +int opacite; + +void setup () { + + size (1000, 600); + + backMenu = loadImage ("titlerobofactor.png"); + img = loadImage("RobofactorProv.PNG"); + backG = loadImage ("fond.png"); + roboFactor = new Heros(1, img); + score = new Score(); + lance = false; + + xDecor = 0; + + initialiserVoiture(voiture); + + initialiserBoite(boite); +} + +void draw () { + if (lance == false) { + noLoop(); + background (0, 0, 0); + image (backMenu, 200, 10); + fill(255); + text("Appuyez sur o pour démarrer", width/2-75, height/2); + } + else { + background (80, 120, 200); + image(backG, xDecor, 0); + roboFactor.afficher(); + roboFactor.mourir(); //On vérifie si Robofactor est mort, s'il l'est, on le fait tomber hors de l'écran. + nouvelleEntite(voiture, boite); //On génère une nouvelle voiture ou une nouvelle boite aux lettres.. + roboFactor.deplacerYProgressif(); //Animation du déplacement de Robofactor vers une autre rangée + + //On déplace et on affiche les voitures et les boites + gererBoite(boite); + gererVoiture(voiture); + + //Le décor défile + xDecor = defiler(xDecor, xDecorFin); + xDecorFin = xDecor + backG.width; + + gererCollision(voiture, boite); + score.afficher(50, 50); + } +} + +void keyPressed() { //Cette fonction gere toutes les touches utiles, haut pour aller vers le haut, bas pour aller vers le bas etc... + if (keyCode==UP) { + roboFactor.deplacerY(-1); //Robofactor va en haut si on appuie sur la flèche du haut + } + if (keyCode==DOWN) { + roboFactor.deplacerY(1); //Robofactor va en bas si on appuie sur la flèche du bas + } + if (key=='o') { + lance = true; + + initialiserVoiture(voiture); + + initialiserBoite(boite); + + score = new Score(); + + xDecor = 0; + + roboFactor = new Heros(1, img); + loop(); + } +} + +void initialiserVoiture(Voiture[] tab) { + for (int i = 0 ; i < tab.length ; i++) { + tab[i] = new Voiture ((int)random(-1, 3), xBlocage, generer(25, 30)); + } +} + +void initialiserBoite(Boite[] tab) { + for (int i = 0 ; i < tab.length ; i++) { + tab[i] = new Boiteverte((int)random(-1, 3), xBlocage, 12); + } +} + +void nouvelleEntite(Voiture tabVoit[], Boite[] tabBoite) { + int generation; + generation = generer(0, 100); //On génère un nombre aléatoirement entre 0 et 150 (entre -1 et 151 non compris). + + if (generation==0) { //Si on tombe sur 0, on "remet en jeu" une des trois voitures (il faut qu'elle soit bloquée en dehors de la fenêtre), à une rangée aléatoire + for (int i = 0 ; i < tabVoit.length ; i++) { + generation = generer(0, 2); + if (tabVoit[i].getx()==xBlocage && i==generation) { + tabVoit[i] = new Voiture ((int)random(0, 3), width+50, generer(25, 30)); + } + } + } + + if (generation==1) { //Si on tombe sur 1, on "remet en jeu" une des deux boites (il faut qu'elle soit bloquée), à une rangée aléatoire + for (int i = 0 ; i < tabBoite.length ; i++) { + generation = generer(0, 1); + if (tabBoite[i].getx()==xBlocage && i == generation) { + tabBoite[i] = new Boiteverte ((int)random(0, 3), width+50, 12); + } + } + } +} + +void gererBoite(Boite[] tab) { //On affiche et on déplace la boite + for (int i = 0 ; i < tab.length ; i++) { + tab[i].afficher(); + tab[i].deplacerX(); + } +} + +void gererVoiture(Voiture[] tab) { //On affiche et on déplace la voiture + for (int i = 0 ; i < tab.length ; i++) { + tab[i].afficher(); + tab[i].deplacerX(); + } +} + +void gererCollision(Voiture[] tabVoit, Boite[] tabBoite) { + for (int i = 0 ; i < tabVoit.length ; i++) { + tabVoit[i].collision(roboFactor); + } + + for (int i = 0 ; i < tabBoite.length ; i++) { + tabBoite[i].collision(roboFactor, score); + } +} + +int generer(int debut, int fin) { + int aleatoire; + aleatoire = (int)random(debut, fin+1); + return aleatoire; +} + +float defiler(float x, float xfin) { + x-=12; + + if (xfin <= width) { + x = 0; + } + + return x; +} + -- cgit v1.2.3-54-g00ecf