Compare commits
5 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
8c6ba77d48 | |
|
|
c2e3cb2f83 | |
|
|
39a7eb9521 | |
|
|
c7cbafe4d7 | |
|
|
3c4fa77d64 |
Binary file not shown.
484
Boss.pde
484
Boss.pde
|
|
@ -1,242 +1,242 @@
|
|||
class Boss {
|
||||
|
||||
int pv, pv_baseboss;
|
||||
boolean invincible = false;
|
||||
float boss_time;
|
||||
boolean boss_d_ou_g = false;
|
||||
int boss_vitesse, default_bosvit;
|
||||
float boss_cooldown = 5;
|
||||
boolean collision_laser = false;
|
||||
PImage visu_boss;
|
||||
int y;
|
||||
int x; //égale à ancien "boss_bouge"
|
||||
boolean show = true;
|
||||
int NUMEROXEPLO = 0;
|
||||
int deta_time;
|
||||
int time_inv_boss, invisi_time = 2000; // 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;
|
||||
int largeur_bar_vie_T = W_jpv;
|
||||
int largeur_bar_vie_cible = W_jpv;
|
||||
//laser
|
||||
int Xa, Xb, Xc, Ya, Yb, Yc, Xd, Yd, Xe, Ye;
|
||||
float ABC, DBC, ACB, DCB, EBC, ECB;
|
||||
int boss_stop = 4;
|
||||
boolean son_Laser = false, clignote = false;
|
||||
|
||||
|
||||
Boss (int pvboss, String visuboss, int start_x, int start_y, int vitboss){
|
||||
boss_vitesse = default_bosvit = vitboss;
|
||||
x = start_x;
|
||||
y = start_y;
|
||||
pv = pv_baseboss = pvboss;
|
||||
boss_time = millis()/1000;
|
||||
visu_boss = loadImage("data/images/" + visuboss);
|
||||
|
||||
}
|
||||
|
||||
void BarDeVieBoss(){
|
||||
|
||||
//largeur en pixels en fonction des pv courants du boss
|
||||
largeur_bar_vie_cible = W_jpv * pv / pv_baseboss;
|
||||
//println ("T : " + largeur_bar_vie_T + " C : " + largeur_bar_vie_cible);
|
||||
|
||||
//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);
|
||||
|
||||
//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(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);
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
//Suppression du missile
|
||||
lancermisile = false; //a voir pour faire une classe pour le missile du ship
|
||||
}
|
||||
|
||||
//vérification de la collision avec le laser du boss
|
||||
if(boss_vitesse == 0){
|
||||
//coordonnées base du vaisseau:
|
||||
Xd = ship.x - 100;
|
||||
Yd = ship.y + 100;
|
||||
|
||||
Xe = ship.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);
|
||||
|
||||
stroke(204, 102, 0);
|
||||
strokeWeight(4);
|
||||
line(Xd, Yd, Xe, Ye);
|
||||
//println("Ye, Xe : " + Ye + " <> " + Xe);
|
||||
//println("Xd, Yd : " + Xd + " <> " + Yd);
|
||||
|
||||
//test collisions avec le laser:
|
||||
if (EBC > ABC || ACB < DCB) {
|
||||
collision_laser = false;
|
||||
//println("collision laser: " + collision_laser);
|
||||
} else {
|
||||
collision_laser = true;
|
||||
ship.collision = true;
|
||||
//println("collision laser: " + collision_laser);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void bouge_boss(){
|
||||
|
||||
//gestion du laser
|
||||
if (boss_time + boss_cooldown < millis()/1000 && !invincible && pv > 0) {
|
||||
boss_vitesse = 0;
|
||||
image(laserboss1, x, 380 + 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 = x;
|
||||
Ya = -100 + y;
|
||||
|
||||
Xb = x - 566;
|
||||
Yb = -100 + y + 981;
|
||||
|
||||
Xc = x + 566;
|
||||
Yc = Yb;
|
||||
|
||||
//triangle(Xa, Ya, Xb, Yb, Xc, Yc);
|
||||
|
||||
// boucle fin d'attaque
|
||||
if (boss_time + boss_cooldown + boss_stop < millis()/1000){
|
||||
boss_cooldown = random(1, 7);
|
||||
boss_vitesse = default_bosvit++;
|
||||
//default_bosvit += 1;
|
||||
boss_time = millis()/1000;
|
||||
son_Laser = false;
|
||||
}
|
||||
|
||||
//println("boss_time + boss_cooldown + boss_stop : "+ boss_time + boss_cooldown + boss_stop);
|
||||
}
|
||||
|
||||
if (boss_d_ou_g == true){ //si le boss vas vers la gauche
|
||||
if (x > 100){ //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-100){
|
||||
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;
|
||||
}
|
||||
|
||||
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 && !clignote) image(visu_boss, x, y);
|
||||
//println("boss ..");
|
||||
|
||||
|
||||
}
|
||||
|
||||
void affiche_et_mets_a_jour_le_boss(){
|
||||
BarDeVieBoss();
|
||||
verifiercollisions();
|
||||
bouge_boss();
|
||||
apparaitre();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
class Boss {
|
||||
|
||||
int pv, pv_baseboss;
|
||||
boolean invincible = false;
|
||||
float boss_time;
|
||||
boolean boss_d_ou_g = false;
|
||||
int boss_vitesse, default_bosvit;
|
||||
float boss_cooldown = 5;
|
||||
boolean collision_laser = false;
|
||||
PImage visu_boss;
|
||||
int y;
|
||||
int x; //égale à ancien "boss_bouge"
|
||||
boolean show = true;
|
||||
int NUMEROXEPLO = 0;
|
||||
int deta_time;
|
||||
int time_inv_boss, invisi_time = 2000; // 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;
|
||||
int largeur_bar_vie_T = W_jpv;
|
||||
int largeur_bar_vie_cible = W_jpv;
|
||||
//laser
|
||||
int Xa, Xb, Xc, Ya, Yb, Yc, Xd, Yd, Xe, Ye;
|
||||
float ABC, DBC, ACB, DCB, EBC, ECB;
|
||||
int boss_stop = 4;
|
||||
boolean son_Laser = false, clignote = false;
|
||||
|
||||
|
||||
Boss (int pvboss, String visuboss, int start_x, int start_y, int vitboss){
|
||||
boss_vitesse = default_bosvit = vitboss;
|
||||
x = start_x;
|
||||
y = start_y;
|
||||
pv = pv_baseboss = pvboss;
|
||||
boss_time = millis()/1000;
|
||||
visu_boss = loadImage("data/images/" + visuboss);
|
||||
|
||||
}
|
||||
|
||||
void BarDeVieBoss(){
|
||||
|
||||
//largeur en pixels en fonction des pv courants du boss
|
||||
largeur_bar_vie_cible = W_jpv * pv / pv_baseboss;
|
||||
//println ("T : " + largeur_bar_vie_T + " C : " + largeur_bar_vie_cible);
|
||||
|
||||
//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);
|
||||
|
||||
//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(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);
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
//Suppression du missile
|
||||
lancermisile = false; //a voir pour faire une classe pour le missile du ship
|
||||
}
|
||||
|
||||
//vérification de la collision avec le laser du boss
|
||||
if(boss_vitesse == 0){
|
||||
//coordonnées base du vaisseau:
|
||||
Xd = ship.x - 100;
|
||||
Yd = ship.y + 100;
|
||||
|
||||
Xe = ship.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);
|
||||
|
||||
stroke(204, 102, 0);
|
||||
strokeWeight(4);
|
||||
line(Xd, Yd, Xe, Ye);
|
||||
//println("Ye, Xe : " + Ye + " <> " + Xe);
|
||||
//println("Xd, Yd : " + Xd + " <> " + Yd);
|
||||
|
||||
//test collisions avec le laser:
|
||||
if (EBC > ABC || ACB < DCB) {
|
||||
collision_laser = false;
|
||||
//println("collision laser: " + collision_laser);
|
||||
} else {
|
||||
collision_laser = true;
|
||||
ship.collision = true;
|
||||
//println("collision laser: " + collision_laser);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void bouge_boss(){
|
||||
|
||||
//gestion du laser
|
||||
if (boss_time + boss_cooldown < millis()/1000 && !invincible && pv > 0) {
|
||||
boss_vitesse = 0;
|
||||
image(laserboss1, x, 380 + 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 = x;
|
||||
Ya = -100 + y;
|
||||
|
||||
Xb = x - 566;
|
||||
Yb = -100 + y + 981;
|
||||
|
||||
Xc = x + 566;
|
||||
Yc = Yb;
|
||||
|
||||
//triangle(Xa, Ya, Xb, Yb, Xc, Yc);
|
||||
|
||||
// boucle fin d'attaque
|
||||
if (boss_time + boss_cooldown + boss_stop < millis()/1000){
|
||||
boss_cooldown = random(1, 7);
|
||||
boss_vitesse = default_bosvit++;
|
||||
//default_bosvit += 1;
|
||||
boss_time = millis()/1000;
|
||||
son_Laser = false;
|
||||
}
|
||||
|
||||
//println("boss_time + boss_cooldown + boss_stop : "+ boss_time + boss_cooldown + boss_stop);
|
||||
}
|
||||
|
||||
if (boss_d_ou_g == true){ //si le boss vas vers la gauche
|
||||
if (x > 100){ //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-100){
|
||||
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;
|
||||
}
|
||||
|
||||
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 && !clignote) image(visu_boss, x, y);
|
||||
//println("boss ..");
|
||||
|
||||
|
||||
}
|
||||
|
||||
void affiche_et_mets_a_jour_le_boss(){
|
||||
BarDeVieBoss();
|
||||
verifiercollisions();
|
||||
bouge_boss();
|
||||
apparaitre();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
126
Misile.pde
126
Misile.pde
|
|
@ -1,63 +1,63 @@
|
|||
//code des Misiles des méchants
|
||||
class Misile {
|
||||
|
||||
boolean show = false;
|
||||
PImage misile;
|
||||
int y,x,yStart;
|
||||
float time;
|
||||
|
||||
Misile(int xt,int yt,String misilet,float timet) {
|
||||
x = xt;
|
||||
y = yStart = yt;
|
||||
time = timet;
|
||||
misile = loadImage(misilet);
|
||||
}
|
||||
|
||||
void apparaitre() {
|
||||
image(misile, x, y);
|
||||
}
|
||||
|
||||
void verifiercollisions() {
|
||||
|
||||
// Si un missile est en cours
|
||||
if (show) {
|
||||
|
||||
// Si le missile sort en bas de l'écran
|
||||
if (y > hauteur) {
|
||||
//on supprime le missile
|
||||
show = false;
|
||||
//on remet le y du missile pour le prochain
|
||||
y = yStart;
|
||||
}
|
||||
|
||||
if ( dist(ship.x, ship.y, x, y) < 130 ) {
|
||||
// Averti le vaiseau de la collision avec le missile
|
||||
ship.collision = true;
|
||||
sonCollision.play();
|
||||
|
||||
// supprime le missile
|
||||
show = false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void tomber() {
|
||||
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() {
|
||||
if (show) {
|
||||
tomber();
|
||||
verifiercollisions();
|
||||
apparaitre();
|
||||
} else {
|
||||
//Si pas de missile actif on peut en lancer un de temps en temps si le ship et toujours en vie:
|
||||
// 0.1% du temps
|
||||
if ( ship.pv != 0 && random(1000) < 1 ) show = true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//code des Misiles des méchants
|
||||
class Misile {
|
||||
|
||||
boolean show = false;
|
||||
PImage misile;
|
||||
int y,x,yStart;
|
||||
float time;
|
||||
|
||||
Misile(int xt,int yt,String misilet,float timet) {
|
||||
x = xt;
|
||||
y = yStart = yt;
|
||||
time = timet;
|
||||
misile = loadImage(misilet);
|
||||
}
|
||||
|
||||
void apparaitre() {
|
||||
image(misile, x, y);
|
||||
}
|
||||
|
||||
void verifiercollisions() {
|
||||
|
||||
// Si un missile est en cours
|
||||
if (show) {
|
||||
|
||||
// Si le missile sort en bas de l'écran
|
||||
if (y > hauteur) {
|
||||
//on supprime le missile
|
||||
show = false;
|
||||
//on remet le y du missile pour le prochain
|
||||
y = yStart;
|
||||
}
|
||||
|
||||
if ( dist(ship.x, ship.y, x, y) < 130 ) {
|
||||
// Averti le vaiseau de la collision avec le missile
|
||||
ship.collision = true;
|
||||
sonCollision.play();
|
||||
|
||||
// supprime le missile
|
||||
show = false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void tomber() {
|
||||
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() {
|
||||
if (show) {
|
||||
tomber();
|
||||
verifiercollisions();
|
||||
apparaitre();
|
||||
} else {
|
||||
//Si pas de missile actif on peut en lancer un de temps en temps si le ship et toujours en vie:
|
||||
// 0.1% du temps
|
||||
if ( ship.pv != 0 && random(1000) < 1 ) show = true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 9.7 KiB |
|
|
@ -0,0 +1,79 @@
|
|||
//il faut faire un ennemi qui balance des missiles guidés
|
||||
//code des Misiles des méchants
|
||||
class MisileGuides {
|
||||
|
||||
boolean show2 = false;
|
||||
PImage misile;
|
||||
int y,x,yStart;
|
||||
float time;
|
||||
|
||||
MisileGuides(int xt,int yt,String misilet,float timet) {
|
||||
x = xt;
|
||||
y = yt;
|
||||
time = timet;
|
||||
misile = loadImage(misilet);
|
||||
}
|
||||
|
||||
void guide() {
|
||||
|
||||
if (x < ship.x) {
|
||||
x = x + 8;
|
||||
}
|
||||
if (y < ship.y) {
|
||||
y = y + 8;
|
||||
}
|
||||
if (x > ship.x) {
|
||||
x = x + -8;
|
||||
}
|
||||
if (y > ship.y) {
|
||||
y = y + -8;
|
||||
|
||||
}
|
||||
}
|
||||
void apparaitre() {
|
||||
image(misile, x, y);
|
||||
}
|
||||
|
||||
void verifiercollisions() {
|
||||
|
||||
// Si un missile est en cours
|
||||
if (show2) {
|
||||
|
||||
// Si le missile sort en bas de l'écran
|
||||
if (y > hauteur) {
|
||||
println(show2);
|
||||
//on supprime le missile
|
||||
show2 = false;
|
||||
//on remet le y du missile pour le prochain
|
||||
y = yStart;
|
||||
}
|
||||
|
||||
if ( dist(ship.x, ship.y, x, y) < 130 ) {
|
||||
// Averti le vaiseau de la collision avec le missile
|
||||
ship.collision = true;
|
||||
sonCollision.play();
|
||||
|
||||
// supprime le missile
|
||||
show2 = false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//void tomber() {
|
||||
// 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_guides() {
|
||||
//println(show2);
|
||||
if (show2 == true) {
|
||||
verifiercollisions();
|
||||
apparaitre();
|
||||
guide();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -13,11 +13,12 @@ SoundFile sonExposion;
|
|||
SoundFile sonCollision;
|
||||
SoundFile sonLaser_boss;
|
||||
|
||||
|
||||
boolean test = false;
|
||||
int largeur = 1600;
|
||||
int hauteur = 900;
|
||||
PImage space, img_ship, misile, imgGameover, imgWin, imgboss1, laserboss1;
|
||||
String misileMechant1 = "data/images/misile - mechant.png";
|
||||
String misileMechant1 = "data/images/misile_mechant.png";
|
||||
int x = largeur/2;
|
||||
int y = hauteur-100;
|
||||
int xm = x;
|
||||
|
|
@ -25,7 +26,7 @@ int ym = y;
|
|||
int timerGameOver = 1500; // milliseconds d'attente avant affichage "Gameover"
|
||||
int timer = 0;
|
||||
int win;
|
||||
float time;
|
||||
float time=0;
|
||||
boolean lancermisile = false;
|
||||
String touchePresse = null;
|
||||
//int nombreEnemiRestek = nombreEnemik;
|
||||
|
|
@ -41,6 +42,7 @@ int nombreEnemiReste = nombreEnemi;
|
|||
Alien [] a = new Alien[nombreEnemi];
|
||||
Misile [] b = new Misile[nombreEnemi];
|
||||
Alien2 [] c = new Alien2[3];
|
||||
MisileGuides [] d = new MisileGuides[1];
|
||||
|
||||
//Etat de deplacement: 0 = aucun deplacement en cours
|
||||
int moveXp = 0; // 1 si deplacement vers le bas
|
||||
|
|
@ -63,7 +65,9 @@ void setup() {
|
|||
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
|
||||
space = loadImage("data/images/space.jpg");
|
||||
|
|
@ -77,7 +81,7 @@ void setup() {
|
|||
//création du boss
|
||||
boss = new Boss(5, "vaiseau_enemi.png", 800, 171, 8);
|
||||
//on crée le ship
|
||||
ship = new Ship(x, y, 3, img_ship);
|
||||
ship = new Ship(x, y, 9999, img_ship);
|
||||
|
||||
//on crée des ennemis
|
||||
for (int i = 0; i<nombreEnemi; i++) {
|
||||
|
|
@ -95,7 +99,6 @@ void setup() {
|
|||
}
|
||||
println("Affichage mechant");
|
||||
|
||||
|
||||
|
||||
//on crée des misiles
|
||||
for (int i = 0; i<nombreEnemi; i++) {
|
||||
|
|
@ -110,6 +113,9 @@ void setup() {
|
|||
}
|
||||
b[i] = new Misile (100+(j*150), k*100, misileMechant1, time);
|
||||
}
|
||||
|
||||
/* missile guidés */
|
||||
d[0] = new MisileGuides (100+(1*150), 1*100, misileMechant1, 0);
|
||||
|
||||
// Sons
|
||||
if (son) {
|
||||
|
|
@ -212,7 +218,22 @@ void setup() {
|
|||
c[1].affiche_et_mets_a_jour_les_mechants();
|
||||
c[2].affiche_et_mets_a_jour_les_mechants();
|
||||
//nombreEnemiReste_vague2 =+ 3;
|
||||
|
||||
}
|
||||
|
||||
if (nombreEnemiReste == -3){
|
||||
if (boss.pv == 0){
|
||||
d[0].affiche_et_mets_a_jour_le_missile_guides();
|
||||
d[0].show2 = true;
|
||||
//println(d[0].show2);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//if ( nombreEnemiReste == 0 && boss_pv == 0) {
|
||||
//on load la deuxièmme vague de vaisseau
|
||||
|
|
@ -290,7 +311,6 @@ void setup() {
|
|||
//ça verifie tout le tenps si une touche utilise est preser
|
||||
void keyPressed() {
|
||||
|
||||
|
||||
if (key == 'f' ) { touchePresse = "f"; }
|
||||
if (key == 'z' && touchePresse == "f") {
|
||||
boss.pv = 2;
|
||||
|
|
@ -358,7 +378,7 @@ void setup() {
|
|||
|
||||
}
|
||||
|
||||
//on calcule et on met a jour les coordonnées du vaisau
|
||||
//on calcule et on met a jour les coordonnées du vaisseau
|
||||
void miseAJourDuDeplacement() {
|
||||
|
||||
int deplacement = 10*moveBoost;
|
||||
|
|
|
|||
Loading…
Reference in New Issue