Merge pull request 'demande de merge de arthaud dans master' (#1) from arthaud into master

Reviewed-on: https://git.netxtime.com/Artiop_GAMES/space_inviders/pulls/1
This commit is contained in:
Arthaud Oriol 2021-04-04 13:19:35 +02:00
commit be64c360b6
10 changed files with 831 additions and 613 deletions

248
Boss.pde
View File

@ -1,176 +1,72 @@
boolean boss_d_ou_g = false; class Boss {
int boss_bouge = 800; int pv;
int boss_y = 171; float boss_time;
int boss_vitesse = 8; int boss_vitesse;
boolean collision_laser = false; PImage visu_boss;
float boss_cooldown = 5; int boss_y;
float boss_time; int boss_x; //égale à ancien "boss_bouge"
int boss_stop = 4; boolean show = true;
int pv_baseboss = 5; int NUMEROXEPLO = 0;
int boss_pv = pv_baseboss;
int Xa, Xb, Xc, Ya, Yb, Yc, Xd, Yd, Xe, Ye; //var à récup
float time_game = millis()/1000; boolean boss_d_ou_g = false;
float ABC, DBC, ACB, DCB, EBC, ECB; boolean collision_laser = false;
int H_jpv = 25, W_jpv = 650, x_jpv, y_jpv = 20; float boss_cooldown = 5;
int largeur_bar_vie_T = W_jpv; int boss_stop = 4;
int largeur_bar_vie_cible = W_jpv; int pv_baseboss = 5;
boolean invincible = false, son_Laser = false, clignote = false; int boss_pv = pv_baseboss;
int invisi_time = 1000; // temps de d'invincibilité en millisecondes (2 secondes) int Xa, Xb, Xc, Ya, Yb, Yc, Xd, Yd, Xe, Ye;
int deta_time, time_inv_boss; float time_game = millis()/1000;
int deta_cligno_time = 150; // temps de clignotage en millisecondes float ABC, DBC, ACB, DCB, EBC, ECB;
int time_cligno_boss; int H_jpv = 25, W_jpv = 650, x_jpv, y_jpv = 20;
int largeur_bar_vie_T = W_jpv;
void boss() { int largeur_bar_vie_cible = W_jpv;
boolean invincible = false, son_Laser = false, clignote = false;
time_game = millis()/1000; int invisi_time = 1000; // temps de d'invincibilité en millisecondes (2 secondes)
println("second : "+ time_game); int deta_time, time_inv_boss;
println("boss_time + boss_cooldown : " + boss_time + boss_cooldown); int deta_cligno_time = 150; // temps de clignotage en millisecondes
if (boss_time + boss_cooldown < time_game && !invincible){ int time_cligno_boss;
boss_vitesse = 0;
image(laserboss1, boss_bouge, 380 + boss_y);
//joue le son du laser une seul fois Boss (int pvboss, String visuboss, int xb, int yb, int bv){
if(!son_Laser){ boss_vitesse = bv;
son_Laser = true; boss_x = xb;
sonLaser_boss.play(); boss_y = yb;
} pv = 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;
}
Xc = boss_bouge + 566;
Yc = Yb; void bouge_boss(){
//triangle(Xa, Ya, Xb, Yb, Xc, Yc); }
//coordonnées base du vaisseau: void apparaitre(){
Xd = x - 100; //affiche l'anime de explosion :
Yd = y + 100; if ( !show && NUMEROXEPLO<50 ) {
// Ou Methode avec un if :
Xe = x + 100; if ( String.valueOf(NUMEROXEPLO).length()==1 ) visu_boss = loadImage("data/images/explosion/explosion000"+NUMEROXEPLO+".png");
Ye = Yd; else visu_boss = loadImage("data/images/explosion/explosion00"+NUMEROXEPLO+".png");
NUMEROXEPLO += 1;
//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; if (NUMEROXEPLO == 1 && son) sonExposion.play();
//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)) ) ); //Affiche le ship ou explosion s'il n'est pas détruis (l'anime de explosion est pas finie)
DCB = acos( ( ((Xb-Xc)*(Xd-Xc)) + ((Yb-Yc)*(Yd-Yc)) )/( sqrt(sq(Xb-Xc)+sq(Yb-Yc)) * sqrt(sq(Xd-Xc)+sq(Yd-Yc)) ) ); if (NUMEROXEPLO < 50) image(visu_boss, boss_x, boss_y);
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("boss ..");
//println("DCB : "+ DCB + " / EBC : "+ EBC); }
//line(Xd, Yd, Xe, Ye); void affiche_et_mets_a_jour_le_boss(){
//println("Xb, Xe : " + Xb + " <> " + Xe); verifiercollisions();
//test collisions avec le laser: bouge_boss();
if (EBC > ABC || ACB < DCB) { apparaitre();
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;
}
}
}

179
Bosss.pde Normal file
View File

@ -0,0 +1,179 @@
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

@ -1,63 +1,63 @@
//code des Misiles des méchants //code des Misiles des méchants
class Misile { class Misile {
boolean show = false; boolean show = false;
PImage misile; PImage 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;
misile = loadImage(misilet); misile = loadImage(misilet);
} }
void apparaitre() { void apparaitre() {
image(misile, x, y); image(misile, x, y);
} }
void verifiercollisions() { void verifiercollisions() {
// Si un missile est en cours // Si un missile est en cours
if (show) { if (show) {
// Si le missile sort en bas de l'écran // Si le missile sort en bas de l'écran
if (y > hauteur) { if (y > hauteur) {
//on supprime le missile //on supprime le missile
show = false; show = false;
//on remet le y du missile pour le prochain //on remet le y du missile pour le prochain
y = yStart; y = yStart;
} }
if ( dist(ship.x, ship.y, x, y) < 130 ) { if ( dist(ship.x, ship.y, x, y) < 130 ) {
// Averti le vaiseau de la collision avec le missile // Averti le vaiseau de la collision avec le missile
ship.collision = true; ship.collision = true;
sonCollision.play(); sonCollision.play();
// supprime le missile // supprime le missile
show = false; show = false;
} }
} }
} }
void tomber() { void tomber() {
y += 6; 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() {
if (show) { if (show) {
tomber(); tomber();
verifiercollisions(); verifiercollisions();
apparaitre(); apparaitre();
} else { } else {
//Si pas de missile actif on peut en lancer un de temps en temps si le ship et toujours en vie: //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 // 0.1% du temps
if ( ship.pv != 0 && random(1000) < 1 ) show = true; if ( ship.pv != 0 && random(1000) < 1 ) show = true;
} }
} }
} }

View File

@ -12,3 +12,4 @@ liens utiles:
- https://processing.org/examples/arrayobjects.html - https://processing.org/examples/arrayobjects.html
- https://processing.org/examples/movingoncurves.html - https://processing.org/examples/movingoncurves.html
à suivre...

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View File

@ -1,16 +1,16 @@
//ç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, PImage enemyt /*float timet*/){ Alien(int xt,int yt,int pv, String imgEenemyt /*float timet*/){
x = xt; x = xt;
y = yt; y = yt;
enemy_explo = enemyt; enemy_explo = loadImage("data/images/" + imgEenemyt);
show = true; show = true;
enemypv = pv; enemypv = pv;
/*time = timet;*/ /*time = timet;*/

116
mechant_2.pde Normal file
View File

@ -0,0 +1,116 @@
//ici il faut faire un enemie qui bouge
class Alien2 {
int blob, blob2;
int x,y;
int enemypv;
boolean show;
int randomy,randomx;
int NUMEROXEPLO = 0;
PImage enemy_explo;
Alien2(int xt,int yt,int pv, String imgEenemyt){
x = xt;
y = yt;
enemy_explo = loadImage("data/images/" + imgEenemyt);
show = true;
enemypv = pv;
}
void alea_bouge(){
randomy = (int) random(0,900);
randomx = (int) random(0,1600);
frameRate(600);
if (frameCount % 600 == 0) {
x = randomx;
y = randomy;
println ("random = "+randomy);
}
}
void apparaitre() {
//affiche l'anime de explosion :
if ( !show && NUMEROXEPLO<50 ) {
// Ou Methode avec un if :
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");
NUMEROXEPLO += 1;
}
if (NUMEROXEPLO == 1 && son) {
sonExposion.play();
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);
}
void verifiercollisions() {
// Avec le missile
if ( show && !( xm < x-40 || xm > x+40 ) && ym < y) {
// on luis enleve un point de vie
enemypv = enemypv - 1;
y = y - 50;
//suprime le missile
lancermisile = false;
}
// 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 ) {
// Averti le vaiseau de la collision
ship.collision = true;
// on luis enleve un point de vie
enemypv = enemypv - 1;
y = y - 20;
}
if ( nombreEnemiReste == 0 && boss_pv == 0) {
}
//le mechant disparait si il a plus de vie :
if ( enemypv == 0 ) {
show = false;
}
}
//public int random(){
// random = (int) Math.random()*(10-4);
// return random;
//}
int cooldown_fonce = (int)random(10);
/*
//le if doit etre dans une fonction ou une class ou void ...
void setup() {
mechant2 = loadImage("data/images/mechant_tres_mechant150x150.png");
}
void draw() {
image(mechant2, 0, 0);
}
*/
void affiche_et_mets_a_jour_les_mechants() {
println("affiche_et_mets_a_jour_les_mechants :");
verifiercollisions();
apparaitre();
alea_bouge();
}
}

View File

@ -1 +0,0 @@
int pv_tres_mechant = 2;

View File

@ -1,370 +1,397 @@
// ajouter le son ? // ajouter le son ?
boolean son = true; boolean son = true;
boolean boss_start = false; boolean boss_start = false;
// ----------------------- \\ // ----------------------- \\
// Importation librairies pour la gestion du sons // Importation librairies pour la gestion du sons
import processing.sound.*; import processing.sound.*;
SoundFile sonLancemissile; SoundFile sonLancemissile;
SoundFile sonExposion; SoundFile sonExposion;
SoundFile sonCollision; SoundFile sonCollision;
SoundFile sonLaser_boss; SoundFile sonLaser_boss;
int largeur = 1600; boolean test = false;
int hauteur = 900; int largeur = 1600;
PImage space, img_ship, misile, mechant, imgGameover, imgWin, imgboss1, laserboss1; int hauteur = 900;
String misileMechant1 = "data/images/misile - mechant.png"; PImage space, img_ship, misile, imgGameover, imgWin, imgboss1, laserboss1;
int x = largeur/2; String misileMechant1 = "data/images/misile - mechant.png";
int y = hauteur-100; int x = largeur/2;
int xm = x; int y = hauteur-100;
int ym = y; int xm = x;
int timerGameOver = 1500; // milliseconds d'attente avant affichage "Gameover" int ym = y;
int timer = 0; int timerGameOver = 1500; // milliseconds d'attente avant affichage "Gameover"
int win; int timer = 0;
float time; int win;
boolean lancermisile = false; float time;
String touchePresse = null; boolean lancermisile = false;
String touchePresse = null;
Ship ship; //int nombreEnemiRestek = nombreEnemik;
boolean[] level = new boolean[3]; Ship ship;
Boss boss;
int nombreEnemi = 20;
int nombreEnemiReste = nombreEnemi; boolean[] level = new boolean[3];
Alien [] a = new Alien[nombreEnemi];
Misile [] b = new Misile[nombreEnemi]; int nombreEnemi = 20;
int nombreEnemik = 20;
//Etat de deplacement: 0 = aucun deplacement en cours int nombreEnemiReste = nombreEnemi;
int moveXp = 0; // 1 si deplacement vers le bas Alien [] a = new Alien[nombreEnemi];
int moveXn = 0; // 1 si deplacement vers le haut Misile [] b = new Misile[nombreEnemi];
int moveYp = 0; // 1 si deplacement vers la droite Alien2 [] c = new Alien2[3];
int moveYn = 0; // 1 si deplacement vers la gauche
int moveBoost = 1; //Etat de deplacement: 0 = aucun deplacement en cours
int moveXp = 0; // 1 si deplacement vers le bas
boolean pause = false; int moveXn = 0; // 1 si deplacement vers le haut
int moveYp = 0; // 1 si deplacement vers la droite
int moveYn = 0; // 1 si deplacement vers la gauche
int moveBoost = 1;
void setup() {
boolean pause = false;
stroke(#000000);
strokeWeight(1); void setup() {
textAlign(LEFT, TOP);
textSize(12); stroke(#000000);
size(1600, 900); strokeWeight(1);
imageMode(CENTER); textAlign(LEFT, TOP);
textSize(12);
size(1600, 900);
//là, ça charge les image dans leur varible imageMode(CENTER);
space = loadImage("data/images/space.jpg");
img_ship = loadImage("data/images/redfighter_200x200.png"); c[0] = new Alien2(800,350,10,"mechant_tres_mechant150x150.png");
misile = loadImage("data/images/misile.png"); c[1] = new Alien2(1200,350,10,"mechant_tres_mechant150x150.png");
//2 pour le skin 2 c[2] = new Alien2(400,350,10,"mechant_tres_mechant150x150.png");
mechant = loadImage("data/images/mechant_rouge_150x150.png");
imgGameover = loadImage("data/images/gameover.png");
imgWin = loadImage("data/images/Win_game.png"); //là, ça charge les images dans leurres varibles
imgboss1 = loadImage("data/images/vaiseau_enemi.png"); space = loadImage("data/images/space.jpg");
laserboss1 = loadImage("data/images/laser_boss1.png"); img_ship = loadImage("data/images/redfighter_200x200.png");
//on crée le ship misile = loadImage("data/images/misile.png");
ship = new Ship(x, y, 3, img_ship); imgGameover = loadImage("data/images/gameover.png");
imgWin = loadImage("data/images/Win_game.png");
//on crée des ennemis imgboss1 = loadImage("data/images/vaiseau_enemi.png");
for (int i = 0; i<nombreEnemi; i++) { laserboss1 = loadImage("data/images/laser_boss1.png");
int j;
int k; //création du boss
if (i > 9) { boss = new Boss(5, "vaiseau_enemi.png", 800, 171, 8);
j = i-10; //on crée le ship
k =2; ship = new Ship(x, y, 3, img_ship);
} else {
j = i; //on crée des ennemis
k =1; for (int i = 0; i<nombreEnemi; i++) {
} int j;
a[i] = new Alien (100+(j*150), k*100, 3, mechant); int k;
} if (i > 9) {
j = i-10;
//on crée des misiles k =2;
for (int i = 0; i<nombreEnemi; i++) { } else {
int j; j = i;
int k; k =1;
if (i > 9) { }
j = i-10; a[i] = new Alien (100+(j*150), k*100, 1, "mechant_rouge_150x150.png");
k =2; // a[i] = new Alien (100+(j*150), k*100, 3, "mechant_tres_mechant150x150.png");
} else { }
j = i; println("Affichage mechant");
k =1;
}
b[i] = new Misile (100+(j*150), k*100, misileMechant1, time);
} //on crée des misiles
for (int i = 0; i<nombreEnemi; i++) {
// Sons int j;
if (son) { int k;
sonLancemissile = new SoundFile(this, "data/sons/lancemissile.mp3"); if (i > 9) {
sonExposion = new SoundFile(this, "data/sons/SFB-explosion2.mp3"); j = i-10;
sonCollision = new SoundFile(this, "data/sons/collision avec le vaisseau.mp3"); k =2;
sonLaser_boss = new SoundFile(this, "data/sons/Laser_boss.mp3"); } else {
} j = i;
k =1;
//Vitesse : frame par seconde }
frameRate(60); b[i] = new Misile (100+(j*150), k*100, misileMechant1, time);
} }
void draw() { // Sons
if (son) {
// if ( nombreEnemiReste == 0 && ship.pv > 0) { sonLancemissile = new SoundFile(this, "data/sons/lancemissile.mp3");
// sonExposion = new SoundFile(this, "data/sons/SFB-explosion2.mp3");
// sonCollision = new SoundFile(this, "data/sons/collision avec le vaisseau.mp3");
// } sonLaser_boss = new SoundFile(this, "data/sons/Laser_boss.mp3");
//debug: }
//println(nombreEnemiReste);
//Vitesse : frame par seconde
frameRate(60);
miseAJourDuDeplacement(); }
float d = random (1, 100); void draw() {
//Affiche l'image de fond (l'espace) // if ( nombreEnemiReste == 0 && ship.pv > 0) {
background(space); //
//
// Si un missile du ship est en cours (actif) // }
if (lancermisile) { //debug:
//on le fait avencer //println(nombreEnemiReste);
ym = ym - 20;
// Si le missile sort en haut de l'écran
if (ym < 0) { miseAJourDuDeplacement();
ym = y;
xm = x; //Affiche l'image de fond (l'espace)
lancermisile = false; background(space);
}
// Affiche l'image du missile // Si un missile du ship est en cours (actif)
image(misile, xm, ym); if (lancermisile) {
} else { //on le fait avencer
//Sinon (missile non actif) ym = ym - 20;
//on le affiche en dessous du vaiseau si encore vivant // Si le missile sort en haut de l'écran
if (ship.show) { if (ym < 0) {
ym = y; ym = y;
xm = x; xm = x;
} lancermisile = false;
} }
// Affiche l'image du missile
// Fait une boucle sur tout le tableau d'ennemies image(misile, xm, ym);
for ( int i = 0; i<nombreEnemi; i++) { } else {
//fait la mise a jour du missile que si l'ennemi est encore vivant ou missile en cours //Sinon (missile non actif)
if (a[i].show || b[i].show) { //on le affiche en dessous du vaiseau si encore vivant
b[i].affiche_et_mets_a_jour_le_missile(); if (ship.show) {
} ym = y;
//fait la mise a jour du mechant que si il est encore vivant xm = x;
if (a[i].NUMEROXEPLO < 50) { }
a[i].affiche_et_mets_a_jour_les_mechants(); }
}
} // Fait une boucle sur tout le tableau d'ennemies
for ( int i = 0; i<nombreEnemi; i++) {
// Affiche l'image du vaiseau //fait la mise a jour du missile que si l'ennemi est encore vivant ou missile en cours
ship.affiche_et_mets_a_jour_le_ship(x, y); if (a[i].show || b[i].show) {
b[i].affiche_et_mets_a_jour_le_missile();
}
//Affiche le boss Du niveau 1 //fait la mise a jour du mechant que si il est encore vivant
if ( nombreEnemiReste == 0 && boss_pv > 0) { if (a[i].NUMEROXEPLO < 50) {
// image(imgWin, largeur/2, hauteur/2); a[i].affiche_et_mets_a_jour_les_mechants();
if (boss_start == false) { }
boss_start = true; }
boss_time = millis()/1000;
}
boss(); // Affiche l'image du vaiseau
} ship.affiche_et_mets_a_jour_le_ship(x, y);
// Mise à jour du texte de l'écran :
text("frame: " + frameCount, 10, 20); //Affiche le boss Du niveau 1
text("Time: " + millis() / 1000, 10, 35); if ( nombreEnemiReste == 0 && boss_pv > 0) {
text("PV: " + ship.pv, width - 60, 20); // image(imgWin, largeur/2, hauteur/2);
if (boss_start == false) {
if (ship.pv == - 0) { boss_start = true;
// Installation du timer boss_time = millis()/1000;
if (timer == 0) timer = millis() + timerGameOver; }
//bosss();
// Vérification du temps par rapport au timer }
//println(millis() + " / timer : " + timer);
if ( millis() > timer ) { //Affiche le boss Classe 1
image(imgGameover, largeur/2, hauteur/2); if ( nombreEnemiReste == 0) {
println("GAME OVER"); boss.affiche_et_mets_a_jour_le_boss();
noLoop(); }
} // Mise à jour du texte de l'écran :
} text("frame: " + frameCount, 10, 20);
text("Time: " + millis() / 1000, 10, 35);
//Affiche le "WIN" Du niveau 1 text("PV: " + ship.pv, width - 60, 20);
if ( nombreEnemiReste == 0 && boss_pv == 0) {
//image(imgWin, largeur/2, hauteur/2); if (ship.pv == - 0) {
} // Installation du timer
if (timer == 0) timer = millis() + timerGameOver;
// Vérification du temps par rapport au timer
//println(millis() + " / timer : " + timer);
if ( nombreEnemiReste == 0 && boss_pv == 0) { if ( millis() > timer ) {
//on load la deuxièmme vague de vaisseau image(imgGameover, largeur/2, hauteur/2);
//on crée des ennemis println("GAME OVER");
// Fait une boucle sur tout le tableau d'ennemies noLoop();
//for ( int i = 0; i<nombreEnemi; i++) {
// //on ressucite les ennemis avec 4 pv }
// a[i].enemypv = 4; }
// nombreEnemiReste = nombreEnemi;
//} //Affiche le "WIN" Du niveau 1
//on crée des ennemis if ( nombreEnemiReste == 0 && boss_pv == 0) {
//image(imgWin, largeur/2, hauteur/2);
// Fait une boucle sur tout le tableau d'ennemies }
for ( int i = 0; i<nombreEnemi; i++) { if (boss_pv == 1){
//fait la mise a jour du missile que si l'ennemi est encore vivant ou missile en cours // met a jour les méchants très méchants
if (a[i].show || b[i].show) { c[0].affiche_et_mets_a_jour_les_mechants();
b[i].affiche_et_mets_a_jour_le_missile(); c[1].affiche_et_mets_a_jour_les_mechants();
} c[2].affiche_et_mets_a_jour_les_mechants();
//fait la mise a jour du mechant que si il est encore vivant }
if (a[i].NUMEROXEPLO < 50) {
a[i].affiche_et_mets_a_jour_les_mechants(); 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
for (int i = 0; i<nombreEnemi; i++) { //for ( int i = 0; i<nombreEnemi; i++) {
int j; // //on ressucite les ennemis avec 4 pv
int k; // a[i].enemypv = 4;
if (i > 9) { // nombreEnemiReste = nombreEnemi;
j = i-10; //}
k =2; //on crée des ennemis
} else {
j = i; // // Fait une boucle sur tout le tableau d'ennemies
k =1; //for ( int i = 0; i<nombreEnemi; i++) {
} // //fait la mise a jour du missile que si l'ennemi est encore vivant ou missile en cours
a[i] = new Alien (100+(j*150), k*100, 3, mechant); // if (a[i].show || b[i].show) {
} // b[i].affiche_et_mets_a_jour_le_missile();
// }
//on crée des misiles // //fait la mise a jour du mechant que si il est encore vivant
for (int i = 0; i<nombreEnemi; i++) { // if (a[i].NUMEROXEPLO < 50) {
int j; // a[i].affiche_et_mets_a_jour_les_mechants();
int k; // }
if (i > 9) { //}
j = i-10;
k =2; //for (int i = 0; i<nombreEnemi; i++) {
} else { // int j;
j = i; // int k;
k =1; // if (i > 9) {
} // j = i-10;
b[i] = new Misile (100+(j*150), k*100, misileMechant1, time); // k =2;
} // } else {
} // j = i;
// k =1;
// Fait une boucle sur tout le tableau d'ennemies // }
for ( int i = 0; i<nombreEnemi; i++) { // a[i] = new Alien (100+(j*150), k*100, 3, mechant);
//fait la mise a jour du missile que si l'ennemi est encore vivant ou missile en cours //}
if (a[i].show || b[i].show) {
b[i].affiche_et_mets_a_jour_le_missile(); ////on crée des misiles
} //for (int i = 0; i<nombreEnemi; i++) {
//fait la mise a jour du mechant que si il est encore vivant // int j;
if (a[i].NUMEROXEPLO < 50) { // int k;
a[i].affiche_et_mets_a_jour_les_mechants(); // if (i > 9) {
} // j = i-10;
} // k =2;
// } else {
} // j = i;
// k =1;
//ça verifie tout le tenps si une touche utilise est preser // }
void keyPressed() { // b[i] = new Misile (100+(j*150), k*100, misileMechant1, time);
//}
// }
if (key == 'f' ) { touchePresse = "f"; }
if (key == 'z' && touchePresse == "f") { // // Fait une boucle sur tout le tableau d'ennemies
//on tue tous les ennemis //for ( int i = 0; i<nombreEnemi; i++) {
for (int i = 0; i<nombreEnemi; i++) { // //fait la mise a jour du missile que si l'ennemi est encore vivant ou missile en cours
a[i].enemypv = 0; // if (a[i].show || b[i].show) {
boss_pv = 0; // b[i].affiche_et_mets_a_jour_le_missile();
} // }
// //fait la mise a jour du mechant que si il est encore vivant
touchePresse = null; // if (a[i].NUMEROXEPLO < 50) {
} // a[i].affiche_et_mets_a_jour_les_mechants();
// }
if (key == ' ' && ship.show) { //}
lancermisile = true;
//Joue le son...
if (son && ym == y) sonLancemissile.play();
}
//if (nombreEnemi <= 0){
//pour mettre en pause/continuer //test = true;
if (key == 'p') { //}
pause = !pause; //c[1] = new Alien2();
}
//Met en pause ou countinue
if (pause) noLoop(); //ça verifie tout le tenps si une touche utilise est preser
else loop(); void keyPressed() {
}
if (key == CODED) { if (key == 'f' ) { touchePresse = "f"; }
if (keyCode == UP) { if (key == 'z' && touchePresse == "f") {
moveYn = 1; //on tue tous les ennemis
} for (int i = 0; i<nombreEnemi; i++) {
if (keyCode == DOWN) { a[i].enemypv = 0;
moveYp = 1; // nombreEnemiRestek = 0;
} boss_pv = 1;
if (keyCode == LEFT) { }
moveXn = 1;
} touchePresse = null;
if (keyCode == RIGHT) { }
moveXp = 1;
} if (key == ' ' && ship.show) {
if (keyCode == SHIFT) { lancermisile = true;
moveBoost = 2; //Joue le son...
} if (son && ym == y) sonLancemissile.play();
} }
}
//pour mettre en pause/continuer
//ça verifie tout le tenps si une touche utilise est relacher if (key == 'p') {
void keyReleased() { pause = !pause;
if (key == CODED) {
if (keyCode == UP) { //Met en pause ou countinue
moveYn = 0; if (pause) noLoop();
} else loop();
if (keyCode == DOWN) { }
moveYp = 0;
}
if (keyCode == LEFT) { if (key == 'z' || key == 'Z' || (key == CODED && keyCode == UP) ) {
moveXn = 0; moveYn = 1;
} }
if (keyCode == RIGHT) { if (key == 's' || key == 'S' || (key == CODED && keyCode == DOWN) ) {
moveXp = 0; moveYp = 1;
} }
if (keyCode == SHIFT) { if (key == 'q' || key == 'Q' || (key == CODED && keyCode == LEFT) ) {
moveBoost = 1; moveXn = 1;
} }
} if (key == 'd' || key == 'D' || (key == CODED && keyCode == RIGHT) ) {
} moveXp = 1;
}
//on calcule et on met a jour les coordonnées du vaisau if (keyCode == SHIFT || key == 'Z' || key == 'Q' || key == 'S' || key == 'D') {
void miseAJourDuDeplacement() { moveBoost = 2;
}
int deplacement = 10*moveBoost;
}
if (moveYp - moveYn == -1) {
y = y - deplacement; //ça verifie tout le tenps si une touche utilise est relacher
if (y < 100) y = 100; void keyReleased() {
}
if (key == 'z' || key == 'Z' || (key == CODED && keyCode == UP) ) {
if (moveYp - moveYn == 1) { moveYn = 0;
y = y + deplacement; }
if (y > height - 100 ) y = height - 100; if (key == 's' || key == 'S' || (key == CODED && keyCode == DOWN) ) {
} moveYp = 0;
}
if (moveXp - moveXn == -1) { if (key == 'q' || key == 'Q' || (key == CODED && keyCode == LEFT) ) {
x = x- deplacement; moveXn = 0;
if (x < 100) x = 100; }
} if (key == 'd' || key == 'D' || (key == CODED && keyCode == RIGHT) ) {
moveXp = 0;
if (moveXp - moveXn == 1) { }
x = x+ deplacement; if (keyCode == SHIFT || key == 'Z' || key == 'Q' || key == 'S' || key == 'D') {
if (x > width - 100 ) x = width - 100; moveBoost = 1;
} }
}
}
//Truc a faire à la fin...
void stop() { //on calcule et on met a jour les coordonnées du vaisau
} void miseAJourDuDeplacement() {
int deplacement = 10*moveBoost;
if (moveYp - moveYn == -1) {
y = y - deplacement;
if (y < 100) y = 100;
}
if (moveYp - moveYn == 1) {
y = y + deplacement;
if (y > height - 100 ) y = height - 100;
}
if (moveXp - moveXn == -1) {
x = x - deplacement;
if (x < 100) x = 100;
}
if (moveXp - moveXn == 1) {
x = x+ deplacement;
if (x > width - 100 ) x = width - 100;
}
}
//Truc a faire à la fin...
void stop() {
}