Premier commit
|
|
@ -0,0 +1,176 @@
|
||||||
|
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 = 1;
|
||||||
|
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 boss() {
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +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 += 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
# Premier jeux de Arthaud avec Processing
|
||||||
|
|
||||||
|
https://processing.org/
|
||||||
|
|
||||||
|
liens utiles:
|
||||||
|
|
||||||
|
- https://processing.org/examples/loadsavetable.html
|
||||||
|
- https://processing.org/examples/loadsavejson.html
|
||||||
|
- https://processing.org/examples/arraylistclass.html
|
||||||
|
- https://processing.org/examples/arraylistclass.html
|
||||||
|
- https://processing.org/tutorials/arrays/
|
||||||
|
- https://processing.org/examples/arrayobjects.html
|
||||||
|
- https://processing.org/examples/movingoncurves.html
|
||||||
|
|
||||||
|
After Width: | Height: | Size: 366 KiB |
|
|
@ -0,0 +1,2 @@
|
||||||
|
|
||||||
|
Pour utiliser "Shéma angle.json" aller sur https://excalidraw.com/
|
||||||
|
After Width: | Height: | Size: 907 KiB |
|
|
@ -0,0 +1,38 @@
|
||||||
|
<?xml version="1.0" standalone="no" ?>
|
||||||
|
<!DOCTYPE project PUBLIC "-//audacityproject-1.3.0//DTD//EN" "http://audacity.sourceforge.net/xml/audacityproject-1.3.0.dtd" >
|
||||||
|
<project xmlns="http://audacity.sourceforge.net/xml/" projname="Sons_data" version="1.3.0" audacityversion="2.1.2" sel0="0.6269387755" sel1="0.8939682540" vpos="0" h="0.0000000000" zoom="86.1328125000" rate="44100.0" snapto="off" selectionformat="hh:mm:ss + milliseconds" frequencyformat="Hz" bandwidthformat="octaves">
|
||||||
|
<tags/>
|
||||||
|
<wavetrack name="Piste audio" channel="2" linked="0" mute="0" solo="0" height="150" minimized="0" isSelected="0" rate="44100" gain="1.0" pan="0.0">
|
||||||
|
<waveclip offset="0.00000000">
|
||||||
|
<sequence maxsamples="262144" sampleformat="262159" numsamples="150992">
|
||||||
|
<waveblock start="0">
|
||||||
|
<simpleblockfile filename="e00004a4.au" len="150992" min="-0.178552" max="0.197785" rms="0.004264"/>
|
||||||
|
</waveblock>
|
||||||
|
</sequence>
|
||||||
|
<envelope numpoints="1">
|
||||||
|
<controlpoint t="3.423832199546" val="1.000000000000"/>
|
||||||
|
</envelope>
|
||||||
|
</waveclip>
|
||||||
|
<waveclip offset="3.42385488">
|
||||||
|
<sequence maxsamples="262144" sampleformat="262159" numsamples="14283">
|
||||||
|
<waveblock start="0">
|
||||||
|
<simpleblockfile filename="e0000c46.au" len="14283" min="-0.0" max="0.0" rms="0.0"/>
|
||||||
|
</waveblock>
|
||||||
|
</sequence>
|
||||||
|
<envelope numpoints="2">
|
||||||
|
<controlpoint t="0.000000000000" val="1.000000000000"/>
|
||||||
|
<controlpoint t="0.323854875283" val="1.000000000000"/>
|
||||||
|
</envelope>
|
||||||
|
</waveclip>
|
||||||
|
<waveclip offset="3.74773243">
|
||||||
|
<sequence maxsamples="262144" sampleformat="262159" numsamples="175205">
|
||||||
|
<waveblock start="0">
|
||||||
|
<simpleblockfile filename="e000035d.au" len="175205" min="-1.00654" max="1.012301" rms="0.148232"/>
|
||||||
|
</waveblock>
|
||||||
|
</sequence>
|
||||||
|
<envelope numpoints="1">
|
||||||
|
<controlpoint t="0.000000000000" val="1.000000000000"/>
|
||||||
|
</envelope>
|
||||||
|
</waveclip>
|
||||||
|
</wavetrack>
|
||||||
|
</project>
|
||||||
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 195 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 82 KiB |
|
After Width: | Height: | Size: 344 KiB |
|
|
@ -0,0 +1,73 @@
|
||||||
|
//ceci est TOUT le code qui concerne un Ship
|
||||||
|
class Ship {
|
||||||
|
|
||||||
|
int x,y,pv;
|
||||||
|
PImage ship_explo;
|
||||||
|
boolean show;
|
||||||
|
boolean collision = false;
|
||||||
|
int NUMEROXEPLO = 0;
|
||||||
|
|
||||||
|
Ship(int xt,int yt, int pvt, PImage imaget){
|
||||||
|
x = xt;
|
||||||
|
y = yt;
|
||||||
|
ship_explo = imaget;
|
||||||
|
show = true;
|
||||||
|
pv = pvt;
|
||||||
|
}
|
||||||
|
|
||||||
|
void apparaitre() {
|
||||||
|
|
||||||
|
//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");
|
||||||
|
else ship_explo = 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) image(ship_explo, x, y);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void set_position(int xn,int yn) {
|
||||||
|
if (show) {
|
||||||
|
x = xn;
|
||||||
|
y = yn;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void verifiercollisions() {
|
||||||
|
|
||||||
|
// avec un mechant:
|
||||||
|
if (collision) {
|
||||||
|
|
||||||
|
// on luis enleve un point de vie
|
||||||
|
pv = pv - 1;
|
||||||
|
collision = false;
|
||||||
|
|
||||||
|
//le vaiseau disparait si il a plus de vie :
|
||||||
|
if ( pv == 0 ) {
|
||||||
|
show = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void affiche_et_mets_a_jour_le_ship(int xn,int yn) {
|
||||||
|
if (show) {
|
||||||
|
set_position(xn,yn);
|
||||||
|
verifiercollisions();
|
||||||
|
|
||||||
|
}
|
||||||
|
//Jusqu'à la fin de l'animation de l'explosion
|
||||||
|
apparaitre();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 858 B |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 5.4 KiB |
|
After Width: | Height: | Size: 6.6 KiB |
|
After Width: | Height: | Size: 7.8 KiB |
|
After Width: | Height: | Size: 9.1 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 9.6 KiB |
|
After Width: | Height: | Size: 8.7 KiB |
|
After Width: | Height: | Size: 7.7 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 5.4 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 962 B |
|
After Width: | Height: | Size: 676 B |
|
After Width: | Height: | Size: 522 B |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 9.7 KiB |
|
After Width: | Height: | Size: 8.7 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 324 KiB |
|
After Width: | Height: | Size: 53 KiB |
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?xml version="1.0" standalone="no" ?>
|
||||||
|
<!DOCTYPE project PUBLIC "-//audacityproject-1.3.0//DTD//EN" "http://audacity.sourceforge.net/xml/audacityproject-1.3.0.dtd" >
|
||||||
|
<project xmlns="http://audacity.sourceforge.net/xml/" projname="demo-explosion-debris-07_data" version="1.3.0" audacityversion="2.2.1" sel0="2.2738645852" sel1="2.2738645852" vpos="0" h="0.0000000000" zoom="465.2871621622" rate="44100.0" snapto="off" selectionformat="hh:mm:ss + millisecondes" frequencyformat="Hz" bandwidthformat="octaves">
|
||||||
|
<tags>
|
||||||
|
<tag name="ARTIST" value="Arthaud"/>
|
||||||
|
<tag name="GENRE" value="Ambient"/>
|
||||||
|
<tag name="TITLE" value="Quand ton vaisseau passe un sale quart-d'heure"/>
|
||||||
|
</tags>
|
||||||
|
<wavetrack name="demo-explosion-debris-07" channel="0" linked="1" mute="0" solo="0" height="150" minimized="0" isSelected="1" rate="44100" gain="1.0" pan="0.0" colorindex="0">
|
||||||
|
<waveclip offset="0.00000000" colorindex="0">
|
||||||
|
<sequence maxsamples="262144" sampleformat="262159" numsamples="86440">
|
||||||
|
<waveblock start="0">
|
||||||
|
<simpleblockfile filename="e0000fa5.au" len="86440" min="-0.937189" max="0.989144" rms="0.307664"/>
|
||||||
|
</waveblock>
|
||||||
|
</sequence>
|
||||||
|
<envelope numpoints="0"/>
|
||||||
|
</waveclip>
|
||||||
|
</wavetrack>
|
||||||
|
<wavetrack name="demo-explosion-debris-07" channel="1" linked="0" mute="0" solo="0" height="150" minimized="0" isSelected="1" rate="44100" gain="1.0" pan="0.0" colorindex="0">
|
||||||
|
<waveclip offset="0.00000000" colorindex="0">
|
||||||
|
<sequence maxsamples="262144" sampleformat="262159" numsamples="86440">
|
||||||
|
<waveblock start="0">
|
||||||
|
<simpleblockfile filename="e0000087.au" len="86440" min="-0.920737" max="1.000718" rms="0.282953"/>
|
||||||
|
</waveblock>
|
||||||
|
</sequence>
|
||||||
|
<envelope numpoints="0"/>
|
||||||
|
</waveclip>
|
||||||
|
</wavetrack>
|
||||||
|
</project>
|
||||||
|
|
@ -0,0 +1,89 @@
|
||||||
|
//ça c'est TOUT le code qui dit ce que c'est un enemy
|
||||||
|
class Alien {
|
||||||
|
|
||||||
|
int x,y,enemypv;
|
||||||
|
PImage enemy_explo;
|
||||||
|
boolean show;
|
||||||
|
float time;
|
||||||
|
int NUMEROXEPLO = 0;
|
||||||
|
|
||||||
|
Alien(int xt,int yt,int pv, PImage enemyt /*float timet*/){
|
||||||
|
x = xt;
|
||||||
|
y = yt;
|
||||||
|
enemy_explo = enemyt;
|
||||||
|
show = true;
|
||||||
|
enemypv = pv;
|
||||||
|
/*time = timet;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
void apparaitre() {
|
||||||
|
|
||||||
|
//affiche l'anime de explosion :
|
||||||
|
if ( !show && NUMEROXEPLO<50 ) {
|
||||||
|
|
||||||
|
//// 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]
|
||||||
|
//int nbCarateres = String.valueOf(NUMEROXEPLO).length();
|
||||||
|
//int nbZeros = 4 - nbCarateres;
|
||||||
|
//String chainDeZero = new String(new char[nbZeros]).replace("\0", "0");
|
||||||
|
//enemy = loadImage("images/explosion/explosion"+chainDeZero+NUMEROXEPLO+".png");
|
||||||
|
|
||||||
|
// 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 - 20;
|
||||||
|
|
||||||
|
//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;
|
||||||
|
}
|
||||||
|
|
||||||
|
//le mechant disparait si il a plus de vie :
|
||||||
|
if ( enemypv == 0 ) {
|
||||||
|
show = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void affiche_et_mets_a_jour_les_mechants() {
|
||||||
|
verifiercollisions();
|
||||||
|
apparaitre();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||