Modification du samedi 08/05/21

This commit is contained in:
Arthaud Oriol 2021-05-08 14:53:35 +02:00
parent 457ae004c4
commit 9915570902
7 changed files with 526 additions and 377 deletions

312
Boss.pde
View File

@ -1,176 +1,136 @@
boolean boss_d_ou_g = false; class Boss {
int boss_bouge = 800; int pv, pv_baseboss;
int boss_y = 171; boolean invincible = false;
int boss_vitesse = 8; float boss_time;
boolean collision_laser = false; boolean boss_d_ou_g = false;
float boss_cooldown = 5; int boss_vitesse;
float boss_time; PImage visu_boss;
int boss_stop = 4; int y;
int pv_baseboss = 5; int x; //égale à ancien "boss_bouge"
int boss_pv = pv_baseboss; boolean show = true;
int Xa, Xb, Xc, Ya, Yb, Yc, Xd, Yd, Xe, Ye; int NUMEROXEPLO = 0;
float time_game = millis()/1000; int deta_time;
float ABC, DBC, ACB, DCB, EBC, ECB; int time_inv_boss, invisi_time = 1000; // temps de d'invincibilité en millisecondes (2 secondes)
int H_jpv = 25, W_jpv = 650, x_jpv, y_jpv = 20; int time_cligno_boss, deta_cligno_time = 150; // temps de clignotage en millisecondes
int largeur_bar_vie_T = W_jpv; //jauge des pv du boss
int largeur_bar_vie_cible = W_jpv; int H_jpv = 25, W_jpv = 650, x_jpv, y_jpv = 20;
boolean invincible = false, son_Laser = false, clignote = false;
int invisi_time = 1000; // temps de d'invincibilité en millisecondes (2 secondes) //var à récup
int deta_time, time_inv_boss; boolean collision_laser = false;
int deta_cligno_time = 150; // temps de clignotage en millisecondes float boss_cooldown = 5;
int time_cligno_boss; int boss_stop = 4;
int Xa, Xb, Xc, Ya, Yb, Yc, Xd, Yd, Xe, Ye;
void boss() { float time_game = millis()/1000;
float ABC, DBC, ACB, DCB, EBC, ECB;
time_game = millis()/1000; int largeur_bar_vie_T = W_jpv;
println("second : "+ time_game); int largeur_bar_vie_cible = W_jpv;
println("boss_time + boss_cooldown : " + boss_time + boss_cooldown); boolean son_Laser = false, clignote = false;
if (boss_time + boss_cooldown < time_game && !invincible){
boss_vitesse = 0;
image(laserboss1, boss_bouge, 380 + boss_y);
//joue le son du laser une seul fois Boss (int pvboss, String visuboss, int start_x, int start_y, int vitboss){
if(!son_Laser){ boss_vitesse = vitboss;
son_Laser = true; x = start_x;
sonLaser_boss.play(); y = start_y;
} pv = pv_baseboss = pvboss;
//calcul dimension laser: boss_time = millis()/1000;
//coordonnées point haut visu_boss = loadImage("data/images/" + visuboss);
Xa = boss_bouge;
Ya = -100 + boss_y; }
Xb = boss_bouge - 566; void verifiercollisions(){
Yb = -100 + boss_y + 981;
//vérifie s'il y a une collisions avec le vaisseau
Xc = boss_bouge + 566; if ( dist(ship.x, ship.y, x, y) < 200 && show) {
Yc = Yb; ship.collision = true;
}
//triangle(Xa, Ya, Xb, Yb, Xc, Yc);
//println("pv : " + pv);
//coordonnées base du vaisseau:
Xd = x - 100; //vérifie les collisions du missile du notre vaisseau sur le boss
Yd = y + 100; if ( dist(xm, ym, x, y) < 114 && !invincible && show){
//invincible = true;
Xe = x + 100; clignote = false;
Ye = Yd; pv = pv - 1;
sonCollision.play();
//calcul des angles if (pv > 0) {
ABC = acos( ( ((Xc-Xb)*(Xa-Xb)) + ((Yc-Yb)*(Ya-Yb)) )/( sqrt(sq(Xc-Xb)+sq(Yc-Yb)) * sqrt(sq(Xa-Xb)+sq(Ya-Yb)) ) ); time_inv_boss = millis() + invisi_time;
ACB = ABC; invincible = true;
//println("ABC : "+ ABC); } else {
//DBC = acos( ( ((Xc-Xb)*(Xd-Xb)) + ((Yc-Yb)*(Yd-Yb)) )/( sqrt(sq(Xc-Xb)+sq(Yc-Yb)) * sqrt(sq(Xd-Xb)+sq(Yd-Yb)) ) ); show = false;
DCB = acos( ( ((Xb-Xc)*(Xd-Xc)) + ((Yb-Yc)*(Yd-Yc)) )/( sqrt(sq(Xb-Xc)+sq(Yb-Yc)) * sqrt(sq(Xd-Xc)+sq(Yd-Yc)) ) ); }
EBC = acos( ( ((Xc-Xb)*(Xe-Xb)) + ((Yc-Yb)*(Ye-Yb)) )/( sqrt(sq(Xc-Xb)+sq(Yc-Yb)) * sqrt(sq(Xe-Xb)+sq(Ye-Yb)) ) ); //calcul delai en miliseconds pour chaque pixels a supprimer de la bars de vie en fonction du temps d'invincibilité du boss
//println("DCB : "+ DCB + " / EBC : "+ EBC); // temps / pixels a suprimmer de la barre :
deta_time = invisi_time / (W_jpv - (W_jpv * pv / pv_baseboss));
//line(Xd, Yd, Xe, Ye); println("pv : " + pv + " :: invincible : " + invincible+ " :: deta_time : " + deta_time);
//println("Xb, Xe : " + Xb + " <> " + Xe);
//test collisions avec le laser: //Suppression du missile
if (EBC > ABC || ACB < DCB) { lancermisile = false; //a voir pour faire une classe pour le missile du ship
collision_laser = false; }
} else {
collision_laser = true; }
ship.collision = true;
println("collision : " + collision_laser); 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
// boucle fin d'attaque x -= boss_vitesse; //on le fais aller a gauche
if (boss_time + boss_cooldown + boss_stop < time_game){ } else { //sinon
boss_cooldown = random(1, 7); boss_d_ou_g = false; //on lui dit d'aller a gauche
boss_vitesse = 8; }
boss_time = time_game; }
son_Laser = false;
} if (boss_d_ou_g == false && x < width){
x += boss_vitesse;
//println("boss_time + boss_cooldown + boss_stop : "+ boss_time + boss_cooldown + boss_stop); } else {
} boss_d_ou_g = true;
}
if(!clignote){
image(imgboss1, boss_bouge, boss_y); }
}
void apparaitre(){
if (boss_d_ou_g == true){ //si le boss vas vers la gauche
if (boss_bouge > 0){ //si le boss il n'est pas tout a gauche //println("invincible : " + invincible + " :: time_inv_boss : " + time_inv_boss + " :: millis() : " + millis() );
boss_bouge -= boss_vitesse; //on le fais aller a gauche
} else { //sinon // invincibileté :
boss_d_ou_g = false; //on lui dit d'aller a gauche if (invincible && time_inv_boss > millis()) {
} //time_inv_boss = millis();
} invincible = true;
} else {
if (boss_d_ou_g == false && boss_bouge < width){ clignote = invincible = false;
boss_bouge += boss_vitesse; }
} else {
boss_d_ou_g = true; //if (largeur_bar_vie_T > largeur_bar_vie_cible){
} // largeur_bar_vie_T -- ;
//}
// clignotement :
if (invincible && time_cligno_boss + deta_cligno_time <= millis()) {
//largeur en pixels en fonction des pv courants du boss time_cligno_boss = millis();
largeur_bar_vie_cible = W_jpv * boss_pv / pv_baseboss; clignote = !clignote;
println ("T : " + largeur_bar_vie_T + " C : " + largeur_bar_vie_cible); }
if (time_inv_boss + deta_time <= millis()){ //affiche l'anime de explosion :
if (largeur_bar_vie_T > largeur_bar_vie_cible){ if ( !show && NUMEROXEPLO<50 ) {
largeur_bar_vie_T -- ; // Ou Methode avec un if :
invincible = true; if ( String.valueOf(NUMEROXEPLO).length()==1 ) visu_boss = loadImage("data/images/explosion/explosion000"+NUMEROXEPLO+".png");
} else { else visu_boss = loadImage("data/images/explosion/explosion00"+NUMEROXEPLO+".png");
invincible = false; NUMEROXEPLO += 1;
} }
time_inv_boss = millis();
} if (NUMEROXEPLO == 1 && son) sonExposion.play();
// clignotement : //Affiche le ship ou explosion s'il n'est pas détruis (l'anime de explosion est pas finie)
if (invincible && time_cligno_boss + deta_cligno_time <= millis()) { if (NUMEROXEPLO < 50 && !clignote) image(visu_boss, x, y);
time_cligno_boss = millis(); //println("boss ..");
clignote = !clignote;
} else if (!invincible) { }
clignote = false;
} void affiche_et_mets_a_jour_le_boss(){
verifiercollisions();
//jauge des pv du boss bouge_boss();
x_jpv = width/2-W_jpv/2; apparaitre();
fill(255, 255, 255, 40);
noStroke(); }
rect(x_jpv, y_jpv, W_jpv, H_jpv, H_jpv / 2);
fill(#AE0202, 230); }
noStroke();
rect(
x_jpv + (W_jpv - largeur_bar_vie_T)/2, // coordonnées X de la bar de vie
y_jpv, // coordonnées Y de la bar de vie
largeur_bar_vie_T,
H_jpv, // hauteur de la bar de vie
H_jpv / 2 // pour arrondir les angles de la bar de vie du boss
);
fill(255);
textSize(H_jpv / 1.5);
textAlign(CENTER, CENTER);
text(boss_pv + " / " + pv_baseboss , x_jpv + W_jpv / 2 , y_jpv + H_jpv /2);
textAlign(LEFT, BOTTOM);
textSize(12);
strokeWeight(2);
stroke(#ffffff);
noFill();
rect(x_jpv, y_jpv, W_jpv, H_jpv, H_jpv / 2);
fill(255, 255, 255);
strokeWeight(1);
stroke(#000000);
if ( dist(ship.x, ship.y, boss_bouge, boss_y) < 200 ) {
// en gros le vaisseau éclate quand il touche le boss
ship.collision = true;
} else {
//si le missile est en contact avec le boss et qu'il n'est pas invincible le boss perd un point de vie
if ( dist(xm, ym, boss_bouge, boss_y) < 114 && !invincible ){
boss_pv = boss_pv - 1;
sonCollision.play();
time_inv_boss = time_cligno_boss = millis();
//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 * boss_pv / pv_baseboss));
//println("boss_pv : " + boss_pv + " :: deta_time : " + deta_time);
lancermisile = false;
clignote = false;
}
}
}

180
Bosss.pde Normal file
View File

@ -0,0 +1,180 @@
boolean boss_d_ou_g = false;
int boss_bouge = 800;
int boss_y = 171;
int boss_vitesse = 8;
boolean collision_laser = false;
float boss_cooldown = 5;
float boss_time;
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;
void bosss() {
time_game = millis()/1000;
println("second : "+ time_game);
println("boss_time + boss_cooldown : " + boss_time + boss_cooldown);
if (boss_time + boss_cooldown < time_game && !invincible){
boss_vitesse = 0;
image(laserboss1, boss_bouge, 380 + boss_y);
//joue le son du laser une seul fois
if(!son_Laser){
son_Laser = true;
sonLaser_boss.play();
}
//calcul dimension laser:
//coordonnées point haut
Xa = boss_bouge;
Ya = -100 + boss_y;
Xb = boss_bouge - 566;
Yb = -100 + boss_y + 981;
Xc = boss_bouge + 566;
Yc = Yb;
//triangle(Xa, Ya, Xb, Yb, Xc, Yc);
//coordonnées base du vaisseau:
Xd = x - 100;
Yd = y + 100;
Xe = x + 100;
Ye = Yd;
//calcul des angles
ABC = acos( ( ((Xc-Xb)*(Xa-Xb)) + ((Yc-Yb)*(Ya-Yb)) )/( sqrt(sq(Xc-Xb)+sq(Yc-Yb)) * sqrt(sq(Xa-Xb)+sq(Ya-Yb)) ) );
ACB = ABC;
//println("ABC : "+ ABC);
//DBC = acos( ( ((Xc-Xb)*(Xd-Xb)) + ((Yc-Yb)*(Yd-Yb)) )/( sqrt(sq(Xc-Xb)+sq(Yc-Yb)) * sqrt(sq(Xd-Xb)+sq(Yd-Yb)) ) );
DCB = acos( ( ((Xb-Xc)*(Xd-Xc)) + ((Yb-Yc)*(Yd-Yc)) )/( sqrt(sq(Xb-Xc)+sq(Yb-Yc)) * sqrt(sq(Xd-Xc)+sq(Yd-Yc)) ) );
EBC = acos( ( ((Xc-Xb)*(Xe-Xb)) + ((Yc-Yb)*(Ye-Yb)) )/( sqrt(sq(Xc-Xb)+sq(Yc-Yb)) * sqrt(sq(Xe-Xb)+sq(Ye-Yb)) ) );
//println("DCB : "+ DCB + " / EBC : "+ EBC);
//line(Xd, Yd, Xe, Ye);
//println("Xb, Xe : " + Xb + " <> " + Xe);
//test collisions avec le laser:
if (EBC > ABC || ACB < DCB) {
collision_laser = false;
} else {
collision_laser = true;
ship.collision = true;
println("collision : " + collision_laser);
}
// boucle fin d'attaque
if (boss_time + boss_cooldown + boss_stop < time_game){
boss_cooldown = random(1, 7);
boss_vitesse = 8;
boss_time = time_game;
son_Laser = false;
}
//println("boss_time + boss_cooldown + boss_stop : "+ boss_time + boss_cooldown + boss_stop);
}
if(!clignote){
image(imgboss1, boss_bouge, boss_y);
}
if (boss_d_ou_g == true){ //si le boss vas vers la gauche
if (boss_bouge > 0){ //si le boss il n'est pas tout a gauche
boss_bouge -= 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 && boss_bouge < width){
boss_bouge += boss_vitesse;
} else {
boss_d_ou_g = true;
}
//largeur en pixels en fonction des pv courants du boss
largeur_bar_vie_cible = W_jpv * boss_pv / pv_baseboss;
println ("T : " + largeur_bar_vie_T + " C : " + largeur_bar_vie_cible);
if (time_inv_boss + deta_time <= millis()){
if (largeur_bar_vie_T > largeur_bar_vie_cible){
largeur_bar_vie_T -- ;
invincible = true;
} else {
invincible = false;
}
time_inv_boss = millis();
}
// clignotement :
if (invincible && time_cligno_boss + deta_cligno_time <= millis()) {
time_cligno_boss = millis();
clignote = !clignote;
} else if (!invincible) {
clignote = false;
}
//jauge des pv du boss
x_jpv = width/2-W_jpv/2;
fill(255, 255, 255, 40);
noStroke();
rect(x_jpv, y_jpv, W_jpv, H_jpv, H_jpv / 2);
fill(#AE0202, 230);
noStroke();
rect(
x_jpv + (W_jpv - largeur_bar_vie_T)/2, // coordonnées X de la bar de vie
y_jpv, // coordonnées Y de la bar de vie
largeur_bar_vie_T,
H_jpv, // hauteur de la bar de vie
H_jpv / 2 // pour arrondir les angles de la bar de vie du boss
);
fill(255);
textSize(H_jpv / 1.5);
textAlign(CENTER, CENTER);
text(boss_pv + " / " + pv_baseboss , x_jpv + W_jpv / 2 , y_jpv + H_jpv /2);
textAlign(LEFT, BOTTOM);
textSize(12);
strokeWeight(2);
stroke(#ffffff);
noFill();
rect(x_jpv, y_jpv, W_jpv, H_jpv, H_jpv / 2);
fill(255, 255, 255);
strokeWeight(1);
stroke(#000000);
if ( dist(ship.x, ship.y, boss_bouge, boss_y) < 200 ) {
// en gros le vaisseau éclate quand il touche le boss
ship.collision = true;
} else {
//si le missile est en contact avec le boss et qu'il n'est pas invincible le boss perd un point de vie
if ( dist(xm, ym, boss_bouge, boss_y) < 114 && !invincible ){
boss_pv = boss_pv - 1;
sonCollision.play();
time_inv_boss = time_cligno_boss = millis();
//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 * boss_pv / pv_baseboss));
//println("boss_pv : " + boss_pv + " :: deta_time : " + deta_time);
lancermisile = false;
clignote = false;
}
}
}

View File

@ -6,7 +6,7 @@ class Misile {
int y,x,yStart; int y,x,yStart;
float time; float time;
Misile(int xt,int yt,String misilet,float timet) { Misile(int xt,int yt,String misilet,float timet) {
x = xt; x = xt;
y = yStart = yt; y = yStart = yt;
time = timet; time = timet;
@ -44,7 +44,7 @@ class Misile {
} }
void tomber() { void tomber() {
y += 4; //ont peut changer cette variable(le nombre de la variable)pour changer la vitesse des missiles enemis. y += 6; //ont peut changer cette variable(le nombre de la variable)pour changer la vitesse des missiles enemis.
} }
void affiche_et_mets_a_jour_le_missile() { void affiche_et_mets_a_jour_le_missile() {

147
Ship.pde
View File

@ -1,73 +1,74 @@
//ceci est TOUT le code qui concerne un Ship //ceci est TOUT le code qui concerne un Ship
class Ship { class Ship {
int x,y,pv; int x,y,pv;
PImage ship_explo; PImage ship_explo;
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){
x = xt; Ship(int xt,int yt, int pvt, PImage imaget){
y = yt; x = xt;
ship_explo = imaget; y = yt;
show = true; ship_explo = imaget;
pv = pvt; show = true;
} pv = pvt;
}
void apparaitre() {
void apparaitre() {
//affiche l'anime de explosion :
if ( !show && NUMEROXEPLO<50 ) { //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"); // Ou Methode avec un if :
else ship_explo = loadImage("data/images/explosion/explosion00"+NUMEROXEPLO+".png"); 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;
} NUMEROXEPLO += 1;
}
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)
if (NUMEROXEPLO < 50) image(ship_explo, x, y); //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) { void set_position(int xn,int yn) {
x = xn; if (show) {
y = yn; x = xn;
} y = yn;
} }
}
void verifiercollisions() {
void verifiercollisions() {
// avec un mechant:
if (collision) { // avec un mechant:
if (collision) {
// on luis enleve un point de vie
pv = pv - 1; // on luis enleve un point de vie
collision = false; pv = pv - 1;
collision = false;
//le vaiseau disparait si il a plus de vie :
if ( pv == 0 ) { //le vaiseau disparait si il a plus de vie :
show = false; if ( pv == 0 ) {
} show = false;
} }
}
}
}
void affiche_et_mets_a_jour_le_ship(int xn,int yn) {
if (show) { void affiche_et_mets_a_jour_le_ship(int xn,int yn) {
set_position(xn,yn); if (show) {
verifiercollisions(); set_position(xn,yn);
verifiercollisions();
}
//Jusqu'à la fin de l'animation de l'explosion }
apparaitre(); //Jusqu'à la fin de l'animation de l'explosion
apparaitre();
}
}
}
}

View File

@ -1,89 +1,89 @@
//ça c'est TOUT le code qui dit ce que c'est un enemy //ça c'est TOUT le code qui dit ce que c'est un enemy
class Alien { class Alien {
int x,y,enemypv; int x,y, enemypv;
PImage enemy_explo; PImage enemy_explo;
boolean show; boolean show;
float time; float time;
int NUMEROXEPLO = 0; int NUMEROXEPLO = 0;
Alien(int xt,int yt,int pv, String imgEenemyt /*float timet*/){ Alien(int xt,int yt,int pv, String imgEenemyt /*float timet*/){
x = xt; x = xt;
y = yt; y = yt;
enemy_explo = loadImage("data/images/" + imgEenemyt); enemy_explo = loadImage("data/images/" + imgEenemyt);
show = true; show = true;
enemypv = pv; enemypv = pv;
/*time = timet;*/ /*time = timet;*/
} }
void apparaitre() { void apparaitre() {
//affiche l'anime de explosion : //affiche l'anime de explosion :
if ( !show && NUMEROXEPLO<50 ) { if ( !show && NUMEROXEPLO<50 ) {
//// Methode avec calcul du nombre de zeros: //// Methode avec calcul du nombre de zeros:
//// 4 - le nb de carateres de l'entier NUMEROXEPLO [4 correspond au nb de zero du nom des fichiers] //// 4 - le nb de carateres de l'entier NUMEROXEPLO [4 correspond au nb de zero du nom des fichiers]
//int nbCarateres = String.valueOf(NUMEROXEPLO).length(); //int nbCarateres = String.valueOf(NUMEROXEPLO).length();
//int nbZeros = 4 - nbCarateres; //int nbZeros = 4 - nbCarateres;
//String chainDeZero = new String(new char[nbZeros]).replace("\0", "0"); //String chainDeZero = new String(new char[nbZeros]).replace("\0", "0");
//enemy = loadImage("images/explosion/explosion"+chainDeZero+NUMEROXEPLO+".png"); //enemy = loadImage("images/explosion/explosion"+chainDeZero+NUMEROXEPLO+".png");
// Ou Methode avec un if : // Ou Methode avec un if :
if ( String.valueOf(NUMEROXEPLO).length()==1 ) enemy_explo = loadImage("data/images/explosion/explosion000"+NUMEROXEPLO+".png"); if ( String.valueOf(NUMEROXEPLO).length()==1 ) enemy_explo = loadImage("data/images/explosion/explosion000"+NUMEROXEPLO+".png");
else enemy_explo = loadImage("data/images/explosion/explosion00"+NUMEROXEPLO+".png"); else enemy_explo = loadImage("data/images/explosion/explosion00"+NUMEROXEPLO+".png");
NUMEROXEPLO += 1; NUMEROXEPLO += 1;
} }
if (NUMEROXEPLO == 1 && son) { if (NUMEROXEPLO == 1 && son) {
sonExposion.play(); sonExposion.play();
nombreEnemiReste -= 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);
} }
void verifiercollisions() { void verifiercollisions() {
// Avec le missile // Avec le missile
if ( show && !( xm < x-40 || xm > x+40 ) && ym < y) { if ( show && !( xm < x-40 || xm > x+40 ) && ym < y) {
// on luis enleve un point de vie // on luis enleve un point de vie
enemypv = enemypv - 1; enemypv = enemypv - 1;
y = y - 20; y = y - 20;
//suprime le missile //suprime le missile
lancermisile = false; lancermisile = false;
} }
// 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 ) {
// Averti le vaiseau de la collision // Averti le vaiseau de la collision
ship.collision = true; ship.collision = true;
// on luis enleve un point de vie // on luis enleve un point de vie
enemypv = enemypv - 1; enemypv = enemypv - 1;
y = y - 20; y = y - 20;
} }
//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;
} }
} }
void affiche_et_mets_a_jour_les_mechants() { void affiche_et_mets_a_jour_les_mechants() {
verifiercollisions(); verifiercollisions();
apparaitre(); apparaitre();
} }
} }

View File

@ -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,9 +104,12 @@ class Alien2 {
*/ */
void affiche_et_mets_a_jour_les_mechants() { void affiche_et_mets_a_jour_les_mechants() {
verifiercollisions(); //println("affiche_et_mets_a_jour_les_mechants :");
if (show) {
verifiercollisions();
alea_bouge();
}
apparaitre(); apparaitre();
alea_bouge();
} }
} }

View File

@ -31,11 +31,12 @@ String touchePresse = null;
//int nombreEnemiRestek = nombreEnemik; //int nombreEnemiRestek = nombreEnemik;
Ship ship; Ship ship;
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];
@ -50,8 +51,6 @@ int moveBoost = 1;
boolean pause = false; boolean pause = false;
void setup() { void setup() {
stroke(#000000); stroke(#000000);
@ -60,18 +59,23 @@ void setup() {
textSize(12); textSize(12);
size(1600, 900); size(1600, 900);
imageMode(CENTER); imageMode(CENTER);
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 //là, ça charge les images dans leurres varibles
space = loadImage("data/images/space.jpg"); space = loadImage("data/images/space.jpg");
img_ship = loadImage("data/images/redfighter_200x200.png"); img_ship = loadImage("data/images/redfighter_200x200.png");
misile = loadImage("data/images/misile.png"); misile = loadImage("data/images/misile.png");
//2 pour le skin 2
imgGameover = loadImage("data/images/gameover.png"); imgGameover = loadImage("data/images/gameover.png");
imgWin = loadImage("data/images/Win_game.png"); imgWin = loadImage("data/images/Win_game.png");
imgboss1 = loadImage("data/images/vaiseau_enemi.png"); imgboss1 = loadImage("data/images/vaiseau_enemi.png");
laserboss1 = loadImage("data/images/laser_boss1.png"); laserboss1 = loadImage("data/images/laser_boss1.png");
//création du boss
boss = new Boss(5, "vaiseau_enemi.png", 800, 171, 8);
//on crée le ship //on crée le ship
ship = new Ship(x, y, 3, img_ship); ship = new Ship(x, y, 3, img_ship);
@ -86,13 +90,12 @@ void setup() {
j = i; j = i;
k =1; k =1;
} }
a[i] = new Alien (100+(j*150), k*100, 3, "mechant_rouge_150x150.png"); a[i] = new Alien (100+(j*150), k*100, 1, "mechant_rouge_150x150.png");
//a[i] = new Alien (100+(j*150), k*100, 3, "mechant_tres_mechant150x150.png"); // a[i] = new Alien (100+(j*150), k*100, 3, "mechant_tres_mechant150x150.png");
} }
println("Affichage mechant");
c[0] = new Alien2(800,350,20,"mechant_tres_mechant150x150.png");
c[1] = new Alien2(1200,350,20,"mechant_tres_mechant150x150.png");
c[2] = new Alien2(400,350,20,"mechant_tres_mechant150x150.png");
//on crée des misiles //on crée des misiles
for (int i = 0; i<nombreEnemi; i++) { for (int i = 0; i<nombreEnemi; i++) {
@ -168,24 +171,25 @@ void setup() {
} }
} }
// 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();
// Affiche l'image du vaiseau // Affiche l'image du vaiseau
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;
boss_time = millis()/1000; boss_time = millis()/1000;
} }
boss(); //bosss();
}
//Affiche le boss Classe 1
text("énemis restant: " + nombreEnemiReste, 120, 20);
if ( nombreEnemiReste <= 0) {
boss.affiche_et_mets_a_jour_le_boss();
} }
// Mise à jour du texte de l'écran : // Mise à jour du texte de l'écran :
@ -208,14 +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 <= 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 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
@ -264,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++) {
@ -294,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;