begin process at 2012 05 27 19:45:51
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Flash / Flash MX

 > 

Scripts

 > 

ActionScript

 > 

Problème avec une boucle for.


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème avec une boucle for.

samedi 18 avril 2009 à 13:56:51 | Problème avec une boucle for.

catousa

Bonjour, j'ais un gros souci avec une boucle for, je suis en train  de faire un petit jeu de plate-forme.

Jusqu'à  la aucun problèmes j'ais  réussi à faire bouger  mon personnage, à le faire sauter, chuter, bouger horizontalement le décor .etc. Ensuite j'ais mis une ennemis, tout marche bien il se tourne en fonction de ma position, il me frape quand j'approche. Le problème c est que si je veut mettre un deuxième même ennemis il faut tout réécrire les fonction, les hitTest, donc je me suis tourné vers le boucle for. Et là, problème : j'ais trois ennemis appelé « yamato1 » « yamato2 »  « yamato3 » ,j' donc fais une boucle for pour que mes trois vilain ennemis  se tourne, me frappe. Malheureusement et comme pour beaucoup d'autre personne apparemment  seul le « yamato3 » fonctionne correctement .

Voilà à quoi sa ressemble.

J'ais un clip pour le personnage principale, un clip pour le décor infranchissable, un autre pour le décor franchissable cette fois, un pour l'arrière plan, un pour ma barre de vie, et un dernier pour les ennemis.

J'ais en tout  trois frames.

Première frame :

vitesse_hidan= 3;

direction_hidan= 2;

action_hidan= 0;

vitesse_saut= 10;

gravité = 3;

chute = true;

saut = false;

yamato_vie= true;

direction_yamato= 1;

 

for(i=1;i<4;i++){

  ennemis=_root["yamato"+i];

 }

 

function déclalage_décor(){

                if (chute==true){

                               décor_infranchissable._y -= gravité;

                               décor_franchissable._y -= gravité;

                               arrière_plan._y -= gravité/4;

                               ennemis._y -= gravité;

                }else{

                }

}

onEnterFrame = function(){

                déclalage_décor();

}

 

Deuxième frame :

//Hidan

 

action_hidan = 0;

chute = true

 

if (Key.isDown(Key.UP)) {

                if(saut==false){

                               ennemis._y+=(vitesse_saut+5);

                    décor_franchissable._y+=(vitesse_saut+5);

                               décor_infranchissable._y+=(vitesse_saut+5);

                               arrière_plan._y+=(vitesse_saut+5)/4;

                               vitesse_saut-=gravité/3.5;

                              

                }

                if (direction_hidan == 2) {

                               direction_hidan = 1;

                               action_hidan = 0;

                }

                if (direction_hidan == 4) {

                               direction_hidan = 3;

                               action_hidan = 0;

                }

}

                if (Key.isDown(Key.RIGHT)) {

                               ennemis._x -= vitesse_hidan;

                               décor_infranchissable._x -= vitesse_hidan;

                               décor_franchissable._x -= vitesse_hidan;

                               arrière_plan._x -= vitesse_hidan/4;

                               direction_hidan = 2;

                               action_hidan = 1;

                } else {

                               if (Key.isDown(Key.LEFT)) {

                                               ennemis._x += vitesse_hidan;

                                               décor_infranchissable._x += vitesse_hidan;

                                               décor_franchissable._x += vitesse_hidan;

                                               arrière_plan._x += vitesse_hidan/4;

                                               direction_hidan = 4;

                                               action_hidan = 1;

                              

                }else{

 

if (Key.isDown(Key.SPACE)) {

                action_hidan = 2;

 

                }

}

                }

if(décor_infranchissable.hitTest(hidan._x,hidan._y+20, true)){

                chute = false;

 

}

if(décor_infranchissable.hitTest(hidan._x,hidan._y+15, true)){

                chute = false;

                décor_infranchissable._y+=vitesse_saut/3;

                ennemis._y+=vitesse_saut/3;

                décor_franchissable._y+=vitesse_saut/3;

                arrière_plan._y+=(vitesse_saut/3)/4;

 

}

if(décor_infranchissable.hitTest(hidan._x,hidan._y-20, true)){

vitesse_saut=0;

 

}

if(décor_infranchissable.hitTest(hidan._x+9,hidan._y, true)){

                décor_infranchissable._x+=3;

                ennemis._x+=3;

                décor_franchissable._x+=3;

                arrière_plan._x+=0.75;

 

}

if(décor_infranchissable.hitTest(hidan._x-9,hidan._y, true)){

    décor_infranchissable._x-=3;

                ennemis._x-=3;

                décor_franchissable._x-=3;

                arrière_plan._x-=0.75;

 

}

               

                if (vitesse_saut<=0){

                               saut = true;

                               vitesse_saut=10;

                }

if(saut==true && chute==false){

                saut=false;

}

 

hidan.gotoAndStop(direction_hidan+action_hidan*4);

 

//Yamato

 

action_yamato=0;

 

 

if(hidan._x<ennemis._x){

                direction_yamato=1;

                action_yamato=0;

}

if(hidan._x>ennemis._x){

                direction_yamato=2;

                action_yamato=0;

}

if(ennemis.hitTest(hidan) && action_hidan == 2){

                yamato_vie=false

}

 

if(ennemis.hitTest(hidan)){

                action_yamato=2;

                _root.barreVie.nextFrame();

               

}

 

                if(yamato_vie==false){

                               direction_yamato=6

                }

ennemis.gotoAndStop(direction_yamato+action_yamato);

 

Troisième frame

gotoandplay(6);

 

 

 

Après plusieurs recherches j'ais trouvé qui l fallait "cibler" mon clip avec des .id =i  ou des .indice = i

Mais sans succès j'ais aussi essayé des créer un tableau mais sa marche pas non. J'ais aussi essayé de mettre :trace (« yamato »+i), dans la fenêtre dont je ne connais pas le nom s'affiche :yamato1, yamato2, yamato3 en boucle mais seul le dernier ennemis fonction. Donc si quelqu'un pouvais m'aider à régler ce problème qui dure depuis bien longtemps.

mardi 21 avril 2009 à 09:49:55 | Re : Problème avec une boucle for.

Girou

Membre Club
Salut,

effectivement avec ce code

for(i=1;i<4;i++){

 ennemis=_root["yamato"+i];

 }

tu affecte successivement a la variable ennemis _root.yamato1,_root.yamato2 et finalement _root.yamato3 donc il est normal que seul le troisieme bouge ensuite lorsque tu fais appel à la variable ennemis (qui devrait plutôt s'appeller ennemi )

Passe par un tableau

ennemis=new Array()
for(i=0;i<3;i++)
    ennemis[i]=_root["yamato"+(i+1)];
 }

comme cela tu auras une référence a tes 3 ennemis (ennemis[0]=_root.yamato1, ennemis[1]=_root.yamato2,...)

ensuite pour tous les faire bouger, dans chaque fonction faisant appel aux ennemis, tu places une boucle (j'en prend une comme exemple)

if(décor_infranchissable.hitTest(hidan._x+9,hidan._y, true)){
                décor_infranchissable._x+=3;
                for(i=0;i<3;i++)
                    ennemis[i]._x+=3;
                 }

                // ennemis._x+=3;
                 décor_franchissable._x+=3;
                arrière_plan._x+=0.75;
}

Et pour plus de flexibilité... utilise une variable totalEnnemis ou tu stock le nombre d'ennemis et tu utilise cette variable pour tes mouvements (histoire de pas être limité a 3...)
for(i=0;i<totalEnnemis;i++)
    ennemis[i]._x+=3;
}

@+

signature not found
mercredi 22 avril 2009 à 17:11:46 | Re : Problème avec une boucle for.

catousa

Ok, merci beaucoup.


Cette discussion est classée dans : vitesse, décor, if, mso, hidan


Répondre à ce message

Sujets en rapport avec ce message

collisions bourrines et coordonnées [ par kin4n ] Bonjour, je débute sous flash et j ai bien des misères à comprendre le systeme de parentage et d appel des hierarchies dans le code. Alors voici un co Changement de touche de direction [ par Kid1er ] Bonjour ^^ J'ai crée un petit jeu, mais je suis bloqué C'est un jeu pour 2 joueurs, mais le problème est que je n'arrive pas à changer les touches dir Jeu flash probleme 3 touches clavier en meme temps [ par cannadou ] Déjà Bonjours,j'ai un problème sur mon jeu flash - quand je presse (flèche du haut) mon perso avance- quand je presse (flèche de droite ou gauche) mon Interactions personnage et décor, HELP NEEDED! [ par ritalounet ] Bonjour à tous, je suis nouveau sur ce site qui jusqu'à maintenant m'a bien aidé (merci donc!). Je bosse actuellement sur la conception d'un site sur probleme de colision [ par Miss1 ] Bonjour mon test de collision fonctionne a merveille mais l'inconvénient c'est que c'est que dès qu'il y a la collision le joueur ne peut plus revenir jeu de tir [ par ibrah26 ] Bonjour à tous! je réalise un jeu du style "jeu de tir" où ma bombe (l'objet qui doit exploser quand on click dessus) apparaît de manière aléatoire de [PROBLEME] Bug après export dans une classe externe [ par Marti73 ] Bonjour, j'ai un petit problème avec l'export de mon jeu de tir dans un fichier classe. En gros quand j'exporte mon code dans le .as j'ai une erreur a Jeu flash (jeu de tir) [ par ibrah26 ] Bonjour, je suis nouveau sur le forum. Je suis en train de réaliser un jeu flash. Je me suis inspiré d'un tuto pour cela. C'est un jeu basique où une if else ? [ par gfpl ] bonjour, voila j ai une petit probleme mon elese tourne en boucle pour se terminer a 5 comme si il ne recevais pas la variable btsend et donc se termi


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 14,056 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales