Soyez le premier à donner votre avis sur cette source.
Vue 11 601 fois - Téléchargée 1 388 fois
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 } }
2 juin 2008 à 15:53
Je m'explique : plutôt que d'entrer directement dans un site, je propose de jouer. A l'issue du jeu, soit tu l'as fini dans un temps imparti et un bouton "entrer" apparait pour accéder au site, soit tu te plantes ou tu dépasses le temps et un bouton apparait te proposant de rejouer.
C'est faisable ou j'ai fumé trop de moquette ?
15 mai 2007 à 16:06
il faut mettre:
cur_alien._x((is_out 2)?cur_alien._x-15:cur_alien._x+15); // on redécale tout le monde
// si la forme de test du dessu n'est pas compatible avec actionscript utilise la suivante
// if (is_out == 2) cur_alien._x-= 15;
// else cur_alien._x+= 15;
et non pas:
cur_alien._x((is_out 2)?Stage.width-15:15); // on redécale tout le monde
// si la forme de test du dessu n'est pas compatible avec actionscript utilise la suivante
// if (is_out == 2) cur_alien._x= Stage.width-15;
// else cur_alien._x= 15;
désolé
;)
15 mai 2007 à 16:01
A ta place, je ferais ainsi:
/////////////////////////////////////
is_out = 0; //0 pas de sortie; 1 sortie à gauche; 2 sortie à droite;
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
is_out = 2; // On previent
}
if(cur_alien._x<15){ // Si on sort à gauche
is_out = 1; // On previent
}
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(is_out!=0){ // Si est sorti d'un coté ou de l'autre.
for(i=0;i<nb_alien0;i++){
cur_alien=_root["alien"+i]; // Sélection N° Alien
cur_alien._x((is_out 2)?Stage.width-15:15); // on redécale tout le monde
// si la forme de test du dessu n'est pas compatible avec actionscript utilise la suivante
// if (is_out == 2) cur_alien._x= Stage.width-15;
// else cur_alien._x= 15;
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
}
}
///////////////////////////////////////////
Du coups, il n'est plus nécessaire d'avoir une vitesse de déplacement pour chaque alien puisque tous vont descendre en même temps, donc tous vont accélerer ensemble.
Il en va de même pour le sens de déplacement. Je n'ai pas modifié ces paramètres, te laissant seul juge de la pertinence de mes commentaires.
Pour finir, il manque aussi deux truc importants avant la riposte des aliens:
- que se passe t-il quand on a dégommé tout les aliens
- que se passe t-il quand les aliens ateignent la dernière ligne
15 mai 2007 à 14:08
P.S.: Les niveaux supérieurs sont en cours, avec les aléats du travail entre temps ;)
15 mai 2007 à 11:11
C'est plutôt bien réussi comme petit jeu, mais il y à un petit truc qui ne colle pas par rapport aux jeux "d'origine":
Normalement, tout les aliens descendent en même temps et repartent dans le sens oposé en même temps.
Voili voilou...
P.S.: les niveaux suivant sont attendu avec impatience ;)
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.