Ne trouvant rien de probant concernant un jeu simple le tout fait uniquement en action script, je l'ai donc fait avec mes petites mimines. la gestion est simple et détaillée, mais le jeu n'est pas complet. Le vaisseau peut tirer sur les aliens qui se déplacement "à l'ancienne", mais ceux-ci ne ripostent pas encore. Le code est simple, mais l'aventage, c'est que tout est fait en action script. Vous pouvez le modifier comme bon vous semble, et m'envoyer un 'tit mail si vous avez des question ou des propositions ;). Il manque le tir des aliens et les pyramides pour se protéger. Bonheur et joie à tous :P
Source / Exemple :
Dans la bibliothèque, il ya a:
- Un clip alien formé de la façon suivante:
image 1 à 20, l'alien bouge et l'image 20 contient le code: gotoAndPlay(1);
image 21 à 30, l'alien se désintègre et l'image 30 contient le code suivant: gotoAndPlay(1);
- Un clip dBall qui représente le tir du vaisseau
- Un clip defender qui correspond au vaisseau du héro ;)
- Des sons associés aux actions de tirs et d'explosions des vaisseaux.
Le source qui suit est à mettre dans la première image du calque principal:
// Source écrit par -=Zac en Flash version 8.0 (ça marche peut-être en flash MX 2004...)
// 09/05/2007
// flash@zacland.net pour tout renseignement.
depth=0; // Variable pour gestion de profondeur
// Affectation des sons.
Snd_defenderExplose=new Sound();
Snd_defenderExplose.attachSound("explosion.wav");
Snd_alienExplose=new Sound();
Snd_alienExplose.attachSound("invaderkilled.wav");
Snd_inv01=new Sound();
Snd_inv01.attachSound("fastinvader1.wav");
Snd_inv02=new Sound();
Snd_inv02.attachSound("fastinvader4.wav");
Snd_defenderShoot=new Sound();
Snd_defenderShoot.attachSound("shoot.wav");
// On crée une instance du vaisseau du héro :P
defender=attachMovie("defender","defender", depth++,{_x:Stage.width/2, _y:Stage.height});
defender.vTir=1; // Vitesse du tir
defender.tir=false; // Y'a-t-il un tir déjà en cours ?
nb_alien=0; // Compteur d'aliens
// Boucle d'affichage des aliens
for(j=1;j<4;j++){
for(i=0;i<5;i++){
alien=attachMovie("alien","alien"+nb_alien, depth++,{_x:i*50+50, _y:j*50});
alien.vt=2; // Chaque alien a sa propre vitesse de déplacement (même s'ils ont tous la même ^^)
alien.h=true; // Les aliens vont vers la droite (false -> ils vont vers la gauche)
nb_alien++; // On incrémente le compteur pour le tableau
}
}
nb_alien0=nb_alien; // On sauvegarde le nombre d'aliens qu'on a au total
onEnterFrame=function(){
defender._x=_xmouse; // Le vaisseau suit le déplacement horizontal de la souris
defender._y=380; // L'abssice du vaisseau est toujours la même (le bas de l'écran)
txt_alien.text=nb_alien; // On affiche le nombre d'aliens restant
for(i=0;i<nb_alien0;i++){
cur_alien=_root["alien"+i]; // Sélection N° Alien
if(cur_alien.h==true){
cur_alien._x+=cur_alien.vt; // Depl vers la droite
} else {
cur_alien._x-=cur_alien.vt; // Depl vers la gauche
}
if(cur_alien._x>Stage.width-15){ // Si sort à droite
cur_alien._x=Stage.width-15; // Arrêt progression
cur_alien.h=!cur_alien.h; // Inversion du sens
cur_alien._y+=30; // On descend de 30 px
cur_alien.vt+=1; // On augmente la vitesse
}
if(cur_alien._x<15){ // Si on sort à gauche
cur_alien._x=15; // Arrêt progression
cur_alien.h=!cur_alien.h; // Inversion du sens
cur_alien._y+=30; // On descent de 30 px
cur_alien.vt+=1; // On augmente la vitesse
}
if(defender.tir=true){ // Si un tir est en cours
if(dBall._y>0){ // Si le tir ne sort pas de l'écran (en haut)
dBall._y-=defender.vTir; // Le tir avance d'un cran
} else { // Sinon
dBall.removeMovieClip(); // On enlève le clip du tir
defender.tir=false; // Il n'y a plus de tir en cours (sous entendu,
// le joueur peut tirer à nouveau)
}
}
if(cur_alien.hitTest(dBall)){ // Test de collision entre tir et alien (alien courant de la boucle)
cur_alien.vt=0; // L'alien s'arrête
dBall.removeMovieClip(); // On efface le tir
defender.tir=false; // Le joueur peut de nouveau tirer
nb_alien--; // Un alien en moins :P
Snd_alienExplose.start(); // On joue le son de l'explosion
cur_alien.gotoAndPlay(21); // On joue la séquence de l'alien qui explose (une instruction
// removeClip se trouve dans la dernière image de la séquence)
}
}
}
onMouseDown=function(){ // Lors de l'appui sur le bouton de la souris
if(defender.tir==false){ // Si un tir n'est pas déjà en cours
// On crée le tir à l'emplacement du vaisseau
dBall=attachMovie("dBall","dBall",depth++,{_x:defender._x, _y:defender._y});
Snd_defenderShoot.start(); // On joue le son qui va bien
defender.tir=true; // On interdi le joueur de pouvoir tirer à nouveau tant que le tir
// est toujours existant
}
}
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.