diff --git a/Boss.pde b/Boss.pde index 7ed3885..e16971d 100644 --- a/Boss.pde +++ b/Boss.pde @@ -1,38 +1,38 @@ class Boss { - int pv; + int pv, pv_baseboss; + boolean invincible = false; float boss_time; + boolean boss_d_ou_g = false; int boss_vitesse; PImage visu_boss; - int boss_y; - int boss_x; //égale à ancien "boss_bouge" + int y; + int x; //égale à ancien "boss_bouge" boolean show = true; int NUMEROXEPLO = 0; + int deta_time; + int time_inv_boss, invisi_time = 1000; // temps de d'invincibilité en millisecondes (2 secondes) + int time_cligno_boss, deta_cligno_time = 150; // temps de clignotage en millisecondes + //jauge des pv du boss + int H_jpv = 25, W_jpv = 650, x_jpv, y_jpv = 20; //var à récup - boolean boss_d_ou_g = false; boolean collision_laser = false; float boss_cooldown = 5; int boss_stop = 4; - int pv_baseboss = 5; - int boss_pv = pv_baseboss; int Xa, Xb, Xc, Ya, Yb, Yc, Xd, Yd, Xe, Ye; float time_game = millis()/1000; float ABC, DBC, ACB, DCB, EBC, ECB; - int H_jpv = 25, W_jpv = 650, x_jpv, y_jpv = 20; int largeur_bar_vie_T = W_jpv; int largeur_bar_vie_cible = W_jpv; - boolean invincible = false, son_Laser = false, clignote = false; - int invisi_time = 1000; // temps de d'invincibilité en millisecondes (2 secondes) - int deta_time, time_inv_boss; - int deta_cligno_time = 150; // temps de clignotage en millisecondes - int time_cligno_boss; + boolean son_Laser = false, clignote = false; + - Boss (int pvboss, String visuboss, int xb, int yb, int bv){ - boss_vitesse = bv; - boss_x = xb; - boss_y = yb; - pv = pvboss; + Boss (int pvboss, String visuboss, int start_x, int start_y, int vitboss){ + boss_vitesse = vitboss; + x = start_x; + y = start_y; + pv = pv_baseboss = pvboss; boss_time = millis()/1000; visu_boss = loadImage("data/images/" + visuboss); @@ -40,26 +40,92 @@ class Boss { void verifiercollisions(){ + //vérifie s'il y a une collisions avec le vaisseau + if ( dist(ship.x, ship.y, x, y) < 200 && show) { + ship.collision = true; + } + + //println("pv : " + pv); + + //vérifie les collisions du missile du notre vaisseau sur le boss + if ( dist(xm, ym, x, y) < 114 && !invincible && show){ + //invincible = true; + clignote = false; + pv = pv - 1; + sonCollision.play(); + if (pv > 0) { + time_inv_boss = millis() + invisi_time; + invincible = true; + } else { + show = false; + } + //calcul delai en miliseconds pour chaque pixels a supprimer de la bars de vie en fonction du temps d'invincibilité du boss + // temps / pixels a suprimmer de la barre : + deta_time = invisi_time / (W_jpv - (W_jpv * pv / pv_baseboss)); + println("pv : " + pv + " :: invincible : " + invincible+ " :: deta_time : " + deta_time); + + //Suppression du missile + lancermisile = false; //a voir pour faire une classe pour le missile du ship + } + } void bouge_boss(){ + if (boss_d_ou_g == true){ //si le boss vas vers la gauche + if (x > 0){ //si le boss il n'est pas tout a gauche + x -= boss_vitesse; //on le fais aller a gauche + } else { //sinon + boss_d_ou_g = false; //on lui dit d'aller a gauche + } + } + + if (boss_d_ou_g == false && x < width){ + x += boss_vitesse; + } else { + boss_d_ou_g = true; + } + } void apparaitre(){ + +//println("invincible : " + invincible + " :: time_inv_boss : " + time_inv_boss + " :: millis() : " + millis() ); + + // invincibileté : + if (invincible && time_inv_boss > millis()) { + //time_inv_boss = millis(); + invincible = true; + } else { + clignote = invincible = false; + } + + //if (largeur_bar_vie_T > largeur_bar_vie_cible){ + // largeur_bar_vie_T -- ; + //} + + // clignotement : + if (invincible && time_cligno_boss + deta_cligno_time <= millis()) { + time_cligno_boss = millis(); + clignote = !clignote; + } + + //affiche l'anime de explosion : if ( !show && NUMEROXEPLO<50 ) { // Ou Methode avec un if : if ( String.valueOf(NUMEROXEPLO).length()==1 ) visu_boss = loadImage("data/images/explosion/explosion000"+NUMEROXEPLO+".png"); else visu_boss = loadImage("data/images/explosion/explosion00"+NUMEROXEPLO+".png"); - NUMEROXEPLO += 1; + NUMEROXEPLO += 1; } if (NUMEROXEPLO == 1 && son) sonExposion.play(); - + //Affiche le ship ou explosion s'il n'est pas détruis (l'anime de explosion est pas finie) - if (NUMEROXEPLO < 50) image(visu_boss, boss_x, boss_y); - println("boss .."); + if (NUMEROXEPLO < 50 && !clignote) image(visu_boss, x, y); + //println("boss .."); + + } void affiche_et_mets_a_jour_le_boss(){ diff --git a/Bosss.pde b/Bosss.pde index 4f64e93..1180a2c 100644 --- a/Bosss.pde +++ b/Bosss.pde @@ -175,5 +175,6 @@ void bosss() { lancermisile = false; clignote = false; } - } + } + } diff --git a/Ship.pde b/Ship.pde index 3ad863a..a9c0760 100644 --- a/Ship.pde +++ b/Ship.pde @@ -1,73 +1,74 @@ -//ceci est TOUT le code qui concerne un Ship -class Ship { - - int x,y,pv; - PImage ship_explo; - boolean show; - boolean collision = false; - int NUMEROXEPLO = 0; - - Ship(int xt,int yt, int pvt, PImage imaget){ - x = xt; - y = yt; - ship_explo = imaget; - show = true; - pv = pvt; - } - - void apparaitre() { - - //affiche l'anime de explosion : - if ( !show && NUMEROXEPLO<50 ) { - - // Ou Methode avec un if : - if ( String.valueOf(NUMEROXEPLO).length()==1 ) ship_explo = loadImage("data/images/explosion/explosion000"+NUMEROXEPLO+".png"); - else ship_explo = loadImage("data/images/explosion/explosion00"+NUMEROXEPLO+".png"); - - NUMEROXEPLO += 1; - } - - if (NUMEROXEPLO == 1 && son) sonExposion.play(); - - //Affiche le ship ou explosion s'il n'est pas détruis (l'anime de explosion est pas finie) - if (NUMEROXEPLO < 50) image(ship_explo, x, y); - - } - - void set_position(int xn,int yn) { - if (show) { - x = xn; - y = yn; - } - } - - void verifiercollisions() { - - // avec un mechant: - if (collision) { - - // on luis enleve un point de vie - pv = pv - 1; - collision = false; - - //le vaiseau disparait si il a plus de vie : - if ( pv == 0 ) { - show = false; - } - } - - } - - - void affiche_et_mets_a_jour_le_ship(int xn,int yn) { - if (show) { - set_position(xn,yn); - verifiercollisions(); - - } - //Jusqu'à la fin de l'animation de l'explosion - apparaitre(); - - } - -} +//ceci est TOUT le code qui concerne un Ship +class Ship { + + int x,y,pv; + PImage ship_explo; + boolean show; + boolean collision = false; + int NUMEROXEPLO = 0; + boolean missileactif = false; + + Ship(int xt,int yt, int pvt, PImage imaget){ + x = xt; + y = yt; + ship_explo = imaget; + show = true; + pv = pvt; + } + + void apparaitre() { + + //affiche l'anime de explosion : + if ( !show && NUMEROXEPLO<50 ) { + + // Ou Methode avec un if : + if ( String.valueOf(NUMEROXEPLO).length()==1 ) ship_explo = loadImage("data/images/explosion/explosion000"+NUMEROXEPLO+".png"); + else ship_explo = loadImage("data/images/explosion/explosion00"+NUMEROXEPLO+".png"); + + NUMEROXEPLO += 1; + } + + if (NUMEROXEPLO == 1 && son) sonExposion.play(); + + //Affiche le ship ou explosion s'il n'est pas détruis (l'anime de explosion est pas finie) + if (NUMEROXEPLO < 50) image(ship_explo, x, y); + + } + + void set_position(int xn,int yn) { + if (show) { + x = xn; + y = yn; + } + } + + void verifiercollisions() { + + // avec un mechant: + if (collision) { + + // on luis enleve un point de vie + pv = pv - 1; + collision = false; + + //le vaiseau disparait si il a plus de vie : + if ( pv == 0 ) { + show = false; + } + } + + } + + + void affiche_et_mets_a_jour_le_ship(int xn,int yn) { + if (show) { + set_position(xn,yn); + verifiercollisions(); + + } + //Jusqu'à la fin de l'animation de l'explosion + apparaitre(); + + } + +} diff --git a/mechant_2.pde b/mechant_2.pde index 81b4b87..7f5a1af 100644 --- a/mechant_2.pde +++ b/mechant_2.pde @@ -23,8 +23,8 @@ class Alien2 { randomy = (int) random(0,900); randomx = (int) random(0,1600); - frameRate(600); - if (frameCount % 600 == 0) { + //frameRate(100); + if (frameCount % (60 * 5) == 0) { x = randomx; y = randomy; println ("random = "+randomy); @@ -45,9 +45,10 @@ class Alien2 { if (NUMEROXEPLO == 1 && son) { sonExposion.play(); - nombreEnemiReste -= 1; } + if (NUMEROXEPLO == 1) nombreEnemiReste -= 1; + //Affiche le mechant ou explosion s'il n'est pas détruis (l'anime de explosion est pas finie) if (NUMEROXEPLO < 50) image(enemy_explo, x, y); @@ -56,7 +57,7 @@ class Alien2 { void verifiercollisions() { // Avec le missile - if ( show && !( xm < x-40 || xm > x+40 ) && ym < y) { + if ( show && dist(xm, ym, x, y) < 80) { // on luis enleve un point de vie enemypv = enemypv - 1; @@ -69,7 +70,7 @@ class Alien2 { // Avec le ship // DEBUG : Affiche x et y dans la console //println(dist(ship.x, ship.y, x, y) + "ship.x : " + ship.x + " < " + (x-75) + " : > " + (x+75) + " ship.y : " + ship.y + " <> " +y); - if ( dist(ship.x, ship.y, x, y) < 130 ) { + if ( dist(ship.x, ship.y, x, y) < 130 && show) { // Averti le vaiseau de la collision ship.collision = true; @@ -78,10 +79,6 @@ class Alien2 { y = y - 20; } - if ( nombreEnemiReste == 0 && boss_pv == 0) { - - } - //le mechant disparait si il a plus de vie : if ( enemypv == 0 ) { show = false; @@ -93,7 +90,7 @@ class Alien2 { // return random; //} - int cooldown_fonce = (int)random(10); + //int cooldown_fonce = (int)random(10); /* //le if doit etre dans une fonction ou une class ou void ... @@ -107,10 +104,12 @@ class Alien2 { */ void affiche_et_mets_a_jour_les_mechants() { - println("affiche_et_mets_a_jour_les_mechants :"); - verifiercollisions(); + //println("affiche_et_mets_a_jour_les_mechants :"); + if (show) { + verifiercollisions(); + alea_bouge(); + } apparaitre(); - alea_bouge(); } } diff --git a/space_inviders.pde b/space_inviders.pde index b7a5e07..cb329db 100644 --- a/space_inviders.pde +++ b/space_inviders.pde @@ -36,7 +36,7 @@ Boss boss; boolean[] level = new boolean[3]; int nombreEnemi = 20; -int nombreEnemik = 20; +int nombreEnemi_vague2 = 3; int nombreEnemiReste = nombreEnemi; Alien [] a = new Alien[nombreEnemi]; Misile [] b = new Misile[nombreEnemi]; @@ -60,9 +60,9 @@ void setup() { size(1600, 900); imageMode(CENTER); - c[0] = new Alien2(800,350,10,"mechant_tres_mechant150x150.png"); - c[1] = new Alien2(1200,350,10,"mechant_tres_mechant150x150.png"); - c[2] = new Alien2(400,350,10,"mechant_tres_mechant150x150.png"); + c[0] = new Alien2(800,350,5,"mechant_tres_mechant150x150.png"); + c[1] = new Alien2(1200,350,5,"mechant_tres_mechant150x150.png"); + c[2] = new Alien2(400,350,5,"mechant_tres_mechant150x150.png"); //là, ça charge les images dans leurres varibles @@ -176,8 +176,8 @@ void setup() { ship.affiche_et_mets_a_jour_le_ship(x, y); - //Affiche le boss Du niveau 1 - if ( nombreEnemiReste == 0 && boss_pv > 0) { + //Affiche le boss Du niveau 1 (ancienne méthode sans la classe boss) + if ( false && nombreEnemiReste == 0 && boss_pv > 0) { // image(imgWin, largeur/2, hauteur/2); if (boss_start == false) { boss_start = true; @@ -187,7 +187,8 @@ void setup() { } //Affiche le boss Classe 1 - if ( nombreEnemiReste == 0) { + text("énemis restant: " + nombreEnemiReste, 120, 20); + if ( nombreEnemiReste <= 0) { boss.affiche_et_mets_a_jour_le_boss(); } @@ -211,17 +212,19 @@ void setup() { } //Affiche le "WIN" Du niveau 1 - if ( nombreEnemiReste == 0 && boss_pv == 0) { + if ( nombreEnemiReste == 0 && boss.pv == 0) { //image(imgWin, largeur/2, hauteur/2); } - if (boss_pv == 1){ + + if (boss.pv <= 3){ // met a jour les méchants très méchants c[0].affiche_et_mets_a_jour_les_mechants(); c[1].affiche_et_mets_a_jour_les_mechants(); c[2].affiche_et_mets_a_jour_les_mechants(); - } + //nombreEnemiReste_vague2 =+ 3; + } - if ( nombreEnemiReste == 0 && boss_pv == 0) { + //if ( nombreEnemiReste == 0 && boss_pv == 0) { //on load la deuxièmme vague de vaisseau //on crée des ennemis // Fait une boucle sur tout le tableau d'ennemies @@ -270,7 +273,7 @@ void setup() { // } // b[i] = new Misile (100+(j*150), k*100, misileMechant1, time); //} - } + //} // // Fait une boucle sur tout le tableau d'ennemies //for ( int i = 0; i