Accueil > Forum > > > > Probleme : déplacement aléatoire multiple.
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
|
|
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 ---
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|