begin process at 2012 05 27 09:12:58
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Flash / Flash MX

 > 

Divers

 > 

Débutant(e)

 > 

Probleme : déplacement aléatoire multiple.


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

Probleme : déplacement aléatoire multiple.

jeudi 10 janvier 2008 à 17:02:02 | Probleme : déplacement aléatoire multiple.

Seydjinn

Bonjour, J'ai un soucis je travaille sur un petit jeu où des ennemis doivent se déplacer aléatoirement. Ils avancent font une pause plus ou moins longue, puis avance dans une autre direction, refont une pause et ainsi de suite indéfiniment. J'ai trouvé sur le site un code approchant où un objet avait se comportement. Malheureusement j'ai deux problemes : Le code que j'ai trouvé est intégré dans son clip et non dans sa frame et je n'arrive pas a l'appliquer à plusieurs objets. Voici mon code : stop() for (j=1; j<=8; j++){ this.attachMovie ("clip", "clip"+j, 100*j); this["clip"+j]._x = randomization(100,800) this["clip"+j]._y = randomization(100,650) } onEnterFrame = function(){ rebours = rebours-1; if (rebours==0) { for (j=1; j<=8; j++){ rebours = Math.floor (Math.random ()*32)+24; direction = Math.floor (Math.random ()*360); elan = Math.floor (Math.random ()*5)+10; _rotation = (direction/Math.PI)*180; } } _x = _x+(Math.cos (direction)*elan); _y = _y+(Math.sin (direction)*elan); if (elan>0) { elan = elan-1; } } la variable rebours est déclarer à 30 dans ma frame précédente (c'ets le seul code qu'on y trouve). Clip est le nom de mon image. Le résultat fait que mes 8 clips apparaissent bien mais ils ne se déplacent pas, ils disparaissent au bout d'un moment et respawn ailleurs (la plus part du temps hors de l'écran). Sauriez-vous me dire comment je dois procéder ? J'avoue être une grande débutante en flash d'où mon probleme... Merci d'avance pour tout !
vendredi 11 janvier 2008 à 16:09:51 | Re : Probleme : déplacement aléatoire multiple.

inaden

Bonjour,
C'est quoi ta fonction randomization.
Sinon, de mon côté, j'ai essayé ton code et je n'ai qu'un bonhomme qui apparaît, c'est donc que la dite fonction, ou bien est absente de ton code ou bien ne fonctionne pas, mais le problème doit se balader la dedans

Tout vient à qui sait attendre
vendredi 11 janvier 2008 à 18:56:00 | Re : Probleme : déplacement aléatoire multiple.

Seydjinn

Argh milles excuses ! j'avasi oublié cette partie de mon code qui se trouve dans ma premiere frame ! :/ Il s'agit de la fonction de random de nombre classique telle qu'on la trouve dans l'aide de flash.

Si tu n'as vu qu'un objet c'est surement parce qu'ils étaient tous superposés du coup. :/

Désolée d'avoir oublié ça :/  voilà la fonction en question qui est placé dans la premiere frame :

function randomization(min:Number, max:Number):Number
{
     var randomY:Number = Math.floor(Math.random() * (max - min + 1)) + min;
     return randomY;
};

Merci pour ta réponse. :)

samedi 12 janvier 2008 à 10:10:49 | Re : Probleme : déplacement aléatoire multiple.

inaden

Salut
Bon, ça n'est pas la panassé mais au moins ça bouge de façon à peu près aléatoire.
Je t'invite fortement, quand tu as un problème à utiliser les action trace pour voir où le bas blesse. Bref, voici un début de code qu'il reste à améliorer.
for (j=1; j<=8; j++){
this.attachMovie ("clip", "clip"+j, j);
_root["clip"+j]._x = randomization(10,200);
_root["clip"+j]._y = randomization(10,65);
}
direction = Math.floor (Math.random ()*360);
//trace("direction = "+direction);
//_rotation = (direction/Math.PI)*180;
for(i=1;i<=8;i++){
_root["elan"+i]= Math.floor (Math.random()*5)+5;
trace("elan"+i+" = "+_root["elan"+i]);
}
_root.onEnterFrame = function(){
if (elan==0) {
for (j=1; j<=8; j++){
_root["clip"+j]._x = _root["clip"+j]._x+(Math.cos (direction)*_root["elan"+j]);
_root["clip"+j]._y = _root["clip"+j]._y+(Math.sin (direction)*_root["elan"+j]);
trace("IF :: clip"+j+"._x = "+_root["clip"+j]._x+" :: clip"+j+"._y = "+_root["clip"+j]._y);
}
}
else{
for (j=1; j<=8; j++){
_root["clip"+j]._x = _root["clip"+j]._x+_root["elan"+j];//(Math.cos (direction)*elan);
_root["clip"+j]._y = _root["clip"+j]._y+_root["elan"+j];//(Math.sin (direction)*elan);
trace("ELSE :: clip"+j+"._x = "+_root["clip"+j]._x+" :: clip"+j+"._y = "+_root["clip"+j]._y);
}
}
}
function randomization(min:Number, max:Number):Number {
var randomY:Number = Math.floor(Math.random() * (max - min + 1)) + min; return randomY;
}

Tout vient à qui sait attendre
lundi 14 janvier 2008 à 10:07:19 | Re : Probleme : déplacement aléatoire multiple.

Seydjinn

Merci beaucoup Inaden !! :) Je vais regarder ça de suite, j'avais essayé d'utiliser trace mais je ne comprenais plus rien je t'avoue, je m'embrouillais trop. Merci encore pour ton aide ! :)
lundi 14 janvier 2008 à 12:34:27 | Re : Probleme : déplacement aléatoire multiple.

inaden

No problemo.
Bonne chance : )

Tout vient à qui sait attendre
vendredi 18 janvier 2008 à 11:17:19 | Re : Probleme : déplacement aléatoire multiple.

Seydjinn

Je me permet de relancer le sujet car j'ai un nouveau probleme maintenant. ^^ Grace à ton code Inaden j'ai réussi à coder le déplacement aléatoire comme je le souhaitais. Voici le code en question : Dans la premiere Frame : //Function pour randomer un nombre aléatoirement : function randomization(min:Number, max:Number):Number { var randomY:Number = Math.floor(Math.random() * (max - min + 1)) + min; return randomY; }; //déclaration de la variable rebours qui prend une valeur différente pr chaque ennemi. for(i=1;i<=8;i++){ _root["rebours"+i]= randomization (10,30); } //fonction de création des clips function spawn(){ for (j=1; j<=8; j++){ this.attachMovie ("clip", "clip"+j, 100*j); this["clip"+j]._x = randomization(100,800) this["clip"+j]._y = randomization(100,650) } } Dans la seconde frame : stop() spawn (); //Appel de la fonction qui crée les ennemis _root.onEnterFrame = function (){ for(i=1;i<=8;i++){//effectue le code de mouvement pour chaque ennemi séparément _root["rebours"+i]= _root["rebours"+i]-1;//décompte du compte à rebours if (_root["rebours"+i] == 0){//qd le compte a rebours est a zero on lance le mouvement du clip. _root["rebours"+i]= randomization (20,60); _root["direction"+i] = Math.floor (Math.random ()*360); _root["clip"+i]._rotation = (_root["direction"+i]/Math.PI)*180; _root["elan"+i]= Math.floor (Math.random()*5)+15; } _root["clip"+i]._x = _root["clip"+i]._x+(Math.cos(_root["direction"+i]) *_root["elan"+i]); _root["clip"+i]._y = _root["clip"+i]._y+(Math.sin(_root["direction"+i]) *_root["elan"+i]); if (_root["elan"+i]>0) { _root["elan"+i] = _root["elan"+i]-1; }//fin du code de mouvement du clip } } Ce code là marche parfaitement (si vous voulez tester créez juste un movieclip appelé clip). Je souhaite maintenant rajouter deux choses à mon code : - Empecher mes clips de sortir du cadre de mon décor ça j'ai réussi, j'utilise deux fonctions, l'une crée le décor et l'autre est un hittest entre mes ennemis et mon décor. - Empecher mes ennemis de se chevaucher. C'est là ou le bas blesse. Comme je crée et nomme mes ennemis dynamiquement, ils ont tous le même nom "clip"+i. Le probleme c'est que mon code est dans une boucle du coup je ne sais pas comment faire pour réaliser un hittest entre "clip"+i ou i =1 par exemple et "clip"+i ou i = 2... Je ne sais pas si je suis trés claire dites le moi si vous avez besoin de précisions. Merci d'avance pour votre aide. :)
vendredi 18 janvier 2008 à 14:13:09 | Re : Probleme : déplacement aléatoire multiple.

inaden

Salut,
Avec l'animation, ou tout du moins l'ensemble du code (test de sortie de scène compris...) ce serait plus facile pour voir comment faire. Et puis la fonction spawn... c'est quoi ?

Tout vient à qui sait attendre
lundi 21 janvier 2008 à 10:18:18 | Re : Probleme : déplacement aléatoire multiple.

Seydjinn

La fonction spawn est initialisée dans la premiere frame c'est la fonction qui crée les clips. Je vais remettre tout mon code actuel que j'ai mis a l'heure actuel dans trois frames. La première : //Function pour randomer un nombre aléatoirement : function randomization(min:Number, max:Number):Number { var randomY:Number = Math.floor(Math.random() * (max - min + 1)) + min; return randomY; }; //déclaration de la variable rebours qui prend une valeur différente pr chaque ennemi. for(i=1;i<=8;i++){ _root["rebours"+i]= randomization (10,30); } //fonction de création des clips function spawn(){ for (j=1; j<=8; j++){ this.attachMovie ("clip", "clip"+j, 100*j); this["clip"+j]._x = randomization(100,800) this["clip"+j]._y = randomization(100,650) } } Dans la deuxieme frame je mets le nouveau code qui m'intéresse : // Déclaration de la fonction de spawn du décor. function spawn_borddemap() { this.attachMovie ("top", "TOP", 130, {_x:0,_y:0}); this.attachMovie ("down", "DOWN1", 134, {_x:0,_y:768}); this.attachMovie ("down", "DOWN", 131, {_x:0,_y:700}); this.attachMovie ("left", "LEFT", 132, {_x:100,_y:0}); this.attachMovie ("right", "RIGHT", 133, {_x:1024,_y:0}); }; // Déclaration de la fonction de collision avec le décor empêchant les ennemis de sortir. function collisiondecor() { for (j=1; j<=8; j++) { if (eval("ENNEMI"+j).hitTest(TOP)) { _root["ENNEMI"+j]._y += 30; } if (eval("ENNEMI"+j).hitTest(DOWN)) { _root["ENNEMI"+j]._y -= 30; } if (eval("ENNEMI"+j).hitTest(RIGHT)) { _root["ENNEMI"+j]._x -= 30; } if (eval("ENNEMI"+j).hitTest(LEFT)) { _root["ENNEMI"+j]._x += 30; } } }; // Déclaration de la fonction permettant de tester les collisions entre ennemis & ennemis. Mais ce code là ne marche pas :( function collision_ennemiennemi() { for(i=1;i<=8;i++){ for(a=1;a<=8;a++){ if(this["clip"+i].hitTest(this["clip"+a])){ //On regarde que les 2 clips n'aient pas le même numéro if(this["clip"+i].numero!=this["clip"+a].numero){ //Si c'est le cas 2 clips différent se touchent. trace("touch"); } } } } } Ca code là (le dernier mis) ne marche pas c'ets celui qui me pose probleme le code de collision entre deux ennemis. et Enfin le code de la troisième frame : stop() spawn_borddemap() spawn ();//fonction qui crée les 8 ennemis. _root.onEnterFrame = function (){ collisiondecor() collision_ennemiennemi() for(i=1;i<=8;i++){//cette boucle permet d'éxecuter les commandes de déplacement et de rebours pour chaque ennemi séparément _root["rebours"+i]= _root["rebours"+i]-1;//ça c'est le décompte du compte à rebours de l'ennemi numéro i... if (_root["rebours"+i] == 0){//...qd ce compte à rebours arrive à zero on lance le mouvement de l'ennemi numéro i _root["rebours"+i]= randomization (20,60);//ça c'est pour réinitialiser le compte à rebours de l'ennemi i _root["direction"+i] = Math.floor (Math.random ()*360);//ça c'est pr définir la direction dela rotation _root["ENNEMI"+i]._rotation = (_root["direction"+i]/Math.PI)*180;//ça c'est la fonction de rotation _root["elan"+i]= Math.floor (Math.random()*5)+15; // ça c'est la fonction qui donne le mouvement du personnage } _root["ENNEMI"+i]._x = _root["ENNEMI"+i]._x+(Math.cos (_root["direction"+i])*_root["elan"+i]); //ça c'est la fonction qui donne le sens du mouvement sur x _root["ENNEMI"+i]._y = _root["ENNEMI"+i]._y+(Math.sin (_root["direction"+i])*_root["elan"+i]); if (_root["elan"+i]>0) { _root["elan"+i] = _root["elan"+i]-1; } } } Voilà maintenant tu as le code complet. Les décors qui sont appelés par la fonction spawn_borddemap sont tout simplement des traits qui font le bords de l'écran. JE n'arrive pas à faire fonctionner la dernière fonction de la frame deux la collision ennemis/ennemis. Est-ce que tu saurais voir où réside mon erreur ? Je ne parviens pas à comprendre. :/ Merci d'avance pour tout ! :)
lundi 21 janvier 2008 à 18:56:01 | Re : Probleme : déplacement aléatoire multiple.

inaden

Salut, désolé mais quand j'édite ton animation (avec ton code) les bonshommes ne se déplacent pas.
Avec l'animation (une version basique) ce serait sûrement plus simple. Désolé.

Tout vient à qui sait attendre

1 2

Cette discussion est classée dans : déplacement, code, aléatoire, probleme, multiple


Répondre à ce message

Sujets en rapport avec ce message

déplacement aléatoire simple [ par rouston ] Bonjour tt le monde, voila , je veut simplement faire en sorte qu'un trait ( ou 2 ou 3.. on s'en fou !) se balade horizontalement ( ou verticalement, déplacement aléatoire [ par BlackEagle ] bonjour,je cherche à faire se déplacer aléatoirement des objets dans une zone de l'écranest-ce que qqun peux m'aider ?merci deplacement aléatoire VS obstacles [ par fxdome ] Bonjour à tous !Je suis en train de développer un petit parcours type RPG. Je contrôle le déplacement d'un personnage dans un environnement en fausse Probleme avec les collisions [ par Webkyo ] Je ne sait pas si se code est bonEn tout ché moi il ne fonctionne pasonClipEvent (enterFrame) { if (this, hittest(_root.bonome_x,_root.bonome._y, true Calque [ par Bob Geldof ] Bonjour tout le monde,Debutant en programmation Flash, mon probleme est le suivant : j ai un bouton qui se trouve sur un calque A et une ListMenu nom Chargement aléatoire d'une image d'un Movie Clip [ par D4rkXtaL ] Bonjour,lors du chargement de ma page d'accueil je souhaite afficher une image contenue dans un MC aléatoirement. Pour celà j'ai mis mes images dans probleme de son et d'actionscript qui ne fonctionne plus ! [ par cbil ] débutant en c/c++ et flash - Me contacterBonjour à tous !J'ai un sacré probleme avec mon animation :Le premier etait pour la barre de chargement mais Besoin d'aide mouvement aléatoire rectifiable [ par chlurps ] Bonjour, je débute en action script et pour l'instant j'ai surtout réalisé des animations d'intro qui ne nécessitent que peu de code Ex : http://fusio probleme de btn ?? [ par Mryosh ] salut a tous je suis infographiste est je misere en code é_èvoila mon soucisje voudrais juste crée un bouton avec deux instances une play une stopjusq probleme avec un bouton [ par pastaga_napster ] bonjour tou le monde voila je débute completemen en flash et je ne compren pa pourkoi mon bouton ne marche pa... le code du bouton g simplement mi ---


Nos sponsors


Sondage...

Comparez les prix

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 : 0,562 sec (4)

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