Space invader v1 entièrement en action script !

Description

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
 }
}

Codes Sources

A voir également

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.