Merge pull request 'arthaud' (#2) from arthaud into master
Reviewed-on: https://git.netxtime.com/Artiop/space_inviders/pulls/2
This commit is contained in:
commit
e001b924cf
104
Boss.pde
104
Boss.pde
|
|
@ -1,38 +1,38 @@
|
||||||
class Boss {
|
class Boss {
|
||||||
int pv;
|
int pv, pv_baseboss;
|
||||||
|
boolean invincible = false;
|
||||||
float boss_time;
|
float boss_time;
|
||||||
|
boolean boss_d_ou_g = false;
|
||||||
int boss_vitesse;
|
int boss_vitesse;
|
||||||
PImage visu_boss;
|
PImage visu_boss;
|
||||||
int boss_y;
|
int y;
|
||||||
int boss_x; //égale à ancien "boss_bouge"
|
int x; //égale à ancien "boss_bouge"
|
||||||
boolean show = true;
|
boolean show = true;
|
||||||
int NUMEROXEPLO = 0;
|
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
|
//var à récup
|
||||||
boolean boss_d_ou_g = false;
|
|
||||||
boolean collision_laser = false;
|
boolean collision_laser = false;
|
||||||
float boss_cooldown = 5;
|
float boss_cooldown = 5;
|
||||||
int boss_stop = 4;
|
int boss_stop = 4;
|
||||||
int pv_baseboss = 5;
|
|
||||||
int boss_pv = pv_baseboss;
|
|
||||||
int Xa, Xb, Xc, Ya, Yb, Yc, Xd, Yd, Xe, Ye;
|
int Xa, Xb, Xc, Ya, Yb, Yc, Xd, Yd, Xe, Ye;
|
||||||
float time_game = millis()/1000;
|
float time_game = millis()/1000;
|
||||||
float ABC, DBC, ACB, DCB, EBC, ECB;
|
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_T = W_jpv;
|
||||||
int largeur_bar_vie_cible = W_jpv;
|
int largeur_bar_vie_cible = W_jpv;
|
||||||
boolean invincible = false, son_Laser = false, clignote = false;
|
boolean 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;
|
|
||||||
|
|
||||||
|
|
||||||
Boss (int pvboss, String visuboss, int xb, int yb, int bv){
|
|
||||||
boss_vitesse = bv;
|
Boss (int pvboss, String visuboss, int start_x, int start_y, int vitboss){
|
||||||
boss_x = xb;
|
boss_vitesse = vitboss;
|
||||||
boss_y = yb;
|
x = start_x;
|
||||||
pv = pvboss;
|
y = start_y;
|
||||||
|
pv = pv_baseboss = pvboss;
|
||||||
boss_time = millis()/1000;
|
boss_time = millis()/1000;
|
||||||
visu_boss = loadImage("data/images/" + visuboss);
|
visu_boss = loadImage("data/images/" + visuboss);
|
||||||
|
|
||||||
|
|
@ -40,13 +40,77 @@ class Boss {
|
||||||
|
|
||||||
void verifiercollisions(){
|
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(){
|
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(){
|
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 :
|
//affiche l'anime de explosion :
|
||||||
if ( !show && NUMEROXEPLO<50 ) {
|
if ( !show && NUMEROXEPLO<50 ) {
|
||||||
// Ou Methode avec un if :
|
// Ou Methode avec un if :
|
||||||
|
|
@ -58,8 +122,10 @@ class Boss {
|
||||||
if (NUMEROXEPLO == 1 && son) sonExposion.play();
|
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)
|
//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);
|
if (NUMEROXEPLO < 50 && !clignote) image(visu_boss, x, y);
|
||||||
println("boss ..");
|
//println("boss ..");
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void affiche_et_mets_a_jour_le_boss(){
|
void affiche_et_mets_a_jour_le_boss(){
|
||||||
|
|
|
||||||
|
|
@ -176,4 +176,5 @@ void bosss() {
|
||||||
clignote = false;
|
clignote = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
1
Ship.pde
1
Ship.pde
|
|
@ -6,6 +6,7 @@ class Ship {
|
||||||
boolean show;
|
boolean show;
|
||||||
boolean collision = false;
|
boolean collision = false;
|
||||||
int NUMEROXEPLO = 0;
|
int NUMEROXEPLO = 0;
|
||||||
|
boolean missileactif = false;
|
||||||
|
|
||||||
Ship(int xt,int yt, int pvt, PImage imaget){
|
Ship(int xt,int yt, int pvt, PImage imaget){
|
||||||
x = xt;
|
x = xt;
|
||||||
|
|
|
||||||
|
|
@ -23,8 +23,8 @@ class Alien2 {
|
||||||
|
|
||||||
randomy = (int) random(0,900);
|
randomy = (int) random(0,900);
|
||||||
randomx = (int) random(0,1600);
|
randomx = (int) random(0,1600);
|
||||||
frameRate(600);
|
//frameRate(100);
|
||||||
if (frameCount % 600 == 0) {
|
if (frameCount % (60 * 5) == 0) {
|
||||||
x = randomx;
|
x = randomx;
|
||||||
y = randomy;
|
y = randomy;
|
||||||
println ("random = "+randomy);
|
println ("random = "+randomy);
|
||||||
|
|
@ -45,9 +45,10 @@ class Alien2 {
|
||||||
|
|
||||||
if (NUMEROXEPLO == 1 && son) {
|
if (NUMEROXEPLO == 1 && son) {
|
||||||
sonExposion.play();
|
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)
|
//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);
|
if (NUMEROXEPLO < 50) image(enemy_explo, x, y);
|
||||||
|
|
||||||
|
|
@ -56,7 +57,7 @@ class Alien2 {
|
||||||
void verifiercollisions() {
|
void verifiercollisions() {
|
||||||
|
|
||||||
// Avec le missile
|
// 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
|
// on luis enleve un point de vie
|
||||||
enemypv = enemypv - 1;
|
enemypv = enemypv - 1;
|
||||||
|
|
@ -69,7 +70,7 @@ class Alien2 {
|
||||||
// Avec le ship
|
// Avec le ship
|
||||||
// DEBUG : Affiche x et y dans la console
|
// 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);
|
//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
|
// Averti le vaiseau de la collision
|
||||||
ship.collision = true;
|
ship.collision = true;
|
||||||
|
|
||||||
|
|
@ -78,10 +79,6 @@ class Alien2 {
|
||||||
y = y - 20;
|
y = y - 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( nombreEnemiReste == 0 && boss_pv == 0) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//le mechant disparait si il a plus de vie :
|
//le mechant disparait si il a plus de vie :
|
||||||
if ( enemypv == 0 ) {
|
if ( enemypv == 0 ) {
|
||||||
show = false;
|
show = false;
|
||||||
|
|
@ -93,7 +90,7 @@ class Alien2 {
|
||||||
// return random;
|
// 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 ...
|
//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() {
|
void affiche_et_mets_a_jour_les_mechants() {
|
||||||
println("affiche_et_mets_a_jour_les_mechants :");
|
//println("affiche_et_mets_a_jour_les_mechants :");
|
||||||
verifiercollisions();
|
if (show) {
|
||||||
|
verifiercollisions();
|
||||||
|
alea_bouge();
|
||||||
|
}
|
||||||
apparaitre();
|
apparaitre();
|
||||||
alea_bouge();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ Boss boss;
|
||||||
boolean[] level = new boolean[3];
|
boolean[] level = new boolean[3];
|
||||||
|
|
||||||
int nombreEnemi = 20;
|
int nombreEnemi = 20;
|
||||||
int nombreEnemik = 20;
|
int nombreEnemi_vague2 = 3;
|
||||||
int nombreEnemiReste = nombreEnemi;
|
int nombreEnemiReste = nombreEnemi;
|
||||||
Alien [] a = new Alien[nombreEnemi];
|
Alien [] a = new Alien[nombreEnemi];
|
||||||
Misile [] b = new Misile[nombreEnemi];
|
Misile [] b = new Misile[nombreEnemi];
|
||||||
|
|
@ -60,9 +60,9 @@ void setup() {
|
||||||
size(1600, 900);
|
size(1600, 900);
|
||||||
imageMode(CENTER);
|
imageMode(CENTER);
|
||||||
|
|
||||||
c[0] = new Alien2(800,350,10,"mechant_tres_mechant150x150.png");
|
c[0] = new Alien2(800,350,5,"mechant_tres_mechant150x150.png");
|
||||||
c[1] = new Alien2(1200,350,10,"mechant_tres_mechant150x150.png");
|
c[1] = new Alien2(1200,350,5,"mechant_tres_mechant150x150.png");
|
||||||
c[2] = new Alien2(400,350,10,"mechant_tres_mechant150x150.png");
|
c[2] = new Alien2(400,350,5,"mechant_tres_mechant150x150.png");
|
||||||
|
|
||||||
|
|
||||||
//là, ça charge les images dans leurres varibles
|
//là, ça charge les images dans leurres varibles
|
||||||
|
|
@ -176,8 +176,8 @@ void setup() {
|
||||||
ship.affiche_et_mets_a_jour_le_ship(x, y);
|
ship.affiche_et_mets_a_jour_le_ship(x, y);
|
||||||
|
|
||||||
|
|
||||||
//Affiche le boss Du niveau 1
|
//Affiche le boss Du niveau 1 (ancienne méthode sans la classe boss)
|
||||||
if ( nombreEnemiReste == 0 && boss_pv > 0) {
|
if ( false && nombreEnemiReste == 0 && boss_pv > 0) {
|
||||||
// image(imgWin, largeur/2, hauteur/2);
|
// image(imgWin, largeur/2, hauteur/2);
|
||||||
if (boss_start == false) {
|
if (boss_start == false) {
|
||||||
boss_start = true;
|
boss_start = true;
|
||||||
|
|
@ -187,7 +187,8 @@ void setup() {
|
||||||
}
|
}
|
||||||
|
|
||||||
//Affiche le boss Classe 1
|
//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();
|
boss.affiche_et_mets_a_jour_le_boss();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -211,17 +212,19 @@ void setup() {
|
||||||
}
|
}
|
||||||
|
|
||||||
//Affiche le "WIN" Du niveau 1
|
//Affiche le "WIN" Du niveau 1
|
||||||
if ( nombreEnemiReste == 0 && boss_pv == 0) {
|
if ( nombreEnemiReste == 0 && boss.pv == 0) {
|
||||||
//image(imgWin, largeur/2, hauteur/2);
|
//image(imgWin, largeur/2, hauteur/2);
|
||||||
}
|
}
|
||||||
if (boss_pv == 1){
|
|
||||||
|
if (boss.pv <= 3){
|
||||||
// met a jour les méchants très méchants
|
// met a jour les méchants très méchants
|
||||||
c[0].affiche_et_mets_a_jour_les_mechants();
|
c[0].affiche_et_mets_a_jour_les_mechants();
|
||||||
c[1].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();
|
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 load la deuxièmme vague de vaisseau
|
||||||
//on crée des ennemis
|
//on crée des ennemis
|
||||||
// Fait une boucle sur tout le tableau d'ennemies
|
// 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);
|
// b[i] = new Misile (100+(j*150), k*100, misileMechant1, time);
|
||||||
//}
|
//}
|
||||||
}
|
//}
|
||||||
|
|
||||||
// // Fait une boucle sur tout le tableau d'ennemies
|
// // Fait une boucle sur tout le tableau d'ennemies
|
||||||
//for ( int i = 0; i<nombreEnemi; i++) {
|
//for ( int i = 0; i<nombreEnemi; i++) {
|
||||||
|
|
@ -300,11 +303,10 @@ void setup() {
|
||||||
|
|
||||||
if (key == 'f' ) { touchePresse = "f"; }
|
if (key == 'f' ) { touchePresse = "f"; }
|
||||||
if (key == 'z' && touchePresse == "f") {
|
if (key == 'z' && touchePresse == "f") {
|
||||||
|
//boss.pv = 1;
|
||||||
//on tue tous les ennemis
|
//on tue tous les ennemis
|
||||||
for (int i = 0; i<nombreEnemi; i++) {
|
for (int i = 0; i<nombreEnemi; i++) {
|
||||||
a[i].enemypv = 0;
|
a[i].enemypv = 0;
|
||||||
// nombreEnemiRestek = 0;
|
|
||||||
boss_pv = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
touchePresse = null;
|
touchePresse = null;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue