commit de la session du samedi 16/01/2021

This commit is contained in:
Stève Oriol 2021-01-17 21:03:58 +01:00
parent ab519c206d
commit 118c27fffc
4 changed files with 435 additions and 383 deletions

View File

@ -6,7 +6,7 @@ boolean collision_laser = false;
float boss_cooldown = 5; float boss_cooldown = 5;
float boss_time; float boss_time;
int boss_stop = 4; int boss_stop = 4;
int pv_baseboss = 1; int pv_baseboss = 5;
int boss_pv = pv_baseboss; 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;

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 += 10; y += 6;
} }
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

@ -0,0 +1 @@
int pv_très_mechant = 2;

View File

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