begin process at 2010 02 10 02:36:22
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

ActionScripts

 > GÉNÉRATEUR DE GRILLE ISO

GÉNÉRATEUR DE GRILLE ISO


 Information sur la source

Note :
Aucune note
Catégorie :ActionScripts Classé sous :grille, iso, createemptymovieclip, arrondir, mathround Niveau :Débutant Date de création :26/06/2007 Date de mise à jour :26/06/2007 12:45:33 Vu / téléchargé :6 779 / 359

Auteur : q1proust77

Ecrire un message privé
Site perso
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Ce code permet de générer une grille iso.
La longueur et la largeur de la grille corespondent a celle du document dans lequel le code est insérer.
La longeur et la largeur des cases sont a parametrer au debut du code (dans les constantes).

Si la largeur du document n'est pas un multiple de la largeur d'une case alors le programme arrondira le nombre de cases au multiple le plus proche.
Il fait de même pour la longueur.

Le fond est générer par le debut du code et corespond a la taille du document.

Merci de poster si vous rencrontrez des bugs, j'essayerai de les corriger le plus vite possible.

Ps: j'ai commenté le plus possible et désolé s'il y a des fautes d'orthographes.

Source

  • //par Q1PROUST
  • fond=createEmptyMovieClip("fond",-1)
  • xx=Stage.width;
  • yy=Stage.height;
  • fond.beginFill(0x000000,100);
  • fond.lineStyle(3,0x000000,100);
  • fond.moveTo(0,0);
  • fond.lineTo(0,yy);
  • fond.lineTo(xx,yy);
  • fond.lineTo(xx,0);
  • fond.lineTo(0,0);
  • fond.endFill();
  • //constantes
  • calque=1;//hauteur de depart des lignes
  • lar=50;//largeur d'une case
  • lon=50;//longueur d'un case
  • //rectification constantes
  • if(xx>lar)//arondi a un multiple de la largeur d'une case
  • {
  • xx=xx/lar;
  • xx=Math.floor(xx);
  • xx=xx*lar;
  • }
  • if(yy>lon)//arondi a un multiple de la longueur d'une case
  • {
  • yy=yy/lon;
  • yy=Math.round(yy);
  • yy=yy*lon;
  • }
  • //atribution des valeur max
  • txmax=xx;
  • tymax=yy;
  • //fin const
  • //pour les variables non-constantes
  • nbr=0;//pour la boucle
  • dx=0;//depart x
  • ax=0;//arrivé x
  • dy=0;//depart y
  • ay=0;//arrivé y
  • //fin
  • //debut boucles
  • while((dx<=txmax)&&(ay<=tymax)){
  • ligne="ligne"+nbr;//var pour nommer les lignes
  • ligne=createEmptyMovieClip(ligne,calque);//crée un Movie clip vide
  • ligne.lineStyle(1.0,0xFFFFFF,100);//definie les propriétés des lignes
  • ligne.moveTo(dx,dy);//point de départ (coordonées)
  • ligne.lineTo(ax,ay);//point d'arrivé (coordonées)
  • _root.nbr++;//incrémentation de nbr pour le nom des lignes
  • _root.calque++;// pareil pour calque pour leur hauteur
  • _root.dx+=_root.lar;//aplication du décalage x
  • _root.ay+=_root.lon;//aplication du decalage y
  • }
  • //rectification des variables non-constantes
  • nbr=0;//pour la boucle
  • dx=txmax;//depart x
  • ax=txmax;//arrivé x
  • dy=tymax;//depart y
  • ay=tymax;//arrivé y
  • while((dx>=0)&&(ay>=0)){
  • ligne="ligne"+nbr;//var pour nommer les lignes
  • ligne=createEmptyMovieClip(ligne,calque);//crée un Movie clip vide
  • ligne.lineStyle(1.0,0xFFFFFF,100);//definie les propriétés des lignes
  • ligne.moveTo(dx,dy);//point de départ (coordonées)
  • ligne.lineTo(ax,ay);//point d'arrivé (coordonées)
  • _root.nbr++;// incrémentation de nbr pour nommer les lignes
  • _root.calque++;// pareil pour calque pour la hauteur des lignesr
  • _root.dx-=_root.lar;//aplication du décalage x
  • _root.ay-=_root.lon;//aplication du decalage y
  • }
  • //rectification des variables non-constantes
  • nbr=0;//pour la boucle
  • dx=txmax;//depart x
  • ax=txmax;//arrivé x
  • dy=0;//depart y
  • ay=0;//arrivé y
  • while((dx>=0)&&(ay<=tymax)){
  • ligne="ligne"+nbr;//var pour nommer les lignes
  • ligne=createEmptyMovieClip(ligne,calque);//crée un Movie clip vide
  • ligne.lineStyle(1.0,0xFFFFFF,100);//definie les propriétés des lignes
  • ligne.moveTo(dx,dy);//point de départ (coordonées)
  • ligne.lineTo(ax,ay);//point d'arrivé (coordonées)
  • _root.nbr++;//incrémentation de nbr pour le nom des lignes
  • _root.calque++;// pareil pour calque pour leur hauteur
  • _root.dx-=_root.lar;//aplication du décalage x
  • _root.ay+=_root.lon;//aplication du decalage y
  • }
  • //rectification des variables non-constantes
  • nbr=0;//pour la boucle
  • dx=0;//depart x
  • ax=0;//arrivé x
  • dy=tymax;//depart y
  • ay=tymax;//arrivé y
  • while((dx<=txmax)&&(ay>=0)){
  • ligne="ligne"+nbr;//var pour nommer les lignes
  • ligne=createEmptyMovieClip(ligne,calque);//crée un Movie clip vide
  • ligne.lineStyle(1.0,0xFFFFFF,100);//definie les propriétés des lignes
  • ligne.moveTo(dx,dy);//point de départ (coordonées)
  • ligne.lineTo(ax,ay);//point d'arrivé (coordonées)
  • _root.nbr++;// incrémentation de nbr pour le nom des lignes
  • _root.calque++;// pareil pour calque pour leur hauteur
  • _root.dx+=_root.lar;//aplication du décalage x
  • _root.ay-=_root.lon;//aplication du decalage y
  • }
  • //fin
//par Q1PROUST

fond=createEmptyMovieClip("fond",-1)
xx=Stage.width;
yy=Stage.height;
fond.beginFill(0x000000,100);
fond.lineStyle(3,0x000000,100);
fond.moveTo(0,0);
fond.lineTo(0,yy);
fond.lineTo(xx,yy);
fond.lineTo(xx,0);
fond.lineTo(0,0);
fond.endFill();

//constantes
calque=1;//hauteur de depart des lignes
lar=50;//largeur d'une case
lon=50;//longueur d'un case

//rectification constantes
if(xx>lar)//arondi a un multiple de la largeur d'une case
{
	xx=xx/lar;
	xx=Math.floor(xx);
	xx=xx*lar;
}

if(yy>lon)//arondi a un multiple de la longueur d'une case
{
	yy=yy/lon;
	yy=Math.round(yy);
	yy=yy*lon;
}

//atribution des valeur max
txmax=xx;
tymax=yy;
//fin const
//pour les variables non-constantes
nbr=0;//pour la boucle
dx=0;//depart x
ax=0;//arrivé x
dy=0;//depart y
ay=0;//arrivé y
//fin

//debut boucles
while((dx<=txmax)&&(ay<=tymax)){
     ligne="ligne"+nbr;//var pour nommer les lignes
     ligne=createEmptyMovieClip(ligne,calque);//crée un Movie clip vide
     ligne.lineStyle(1.0,0xFFFFFF,100);//definie les propriétés des lignes
     ligne.moveTo(dx,dy);//point de départ (coordonées)
     ligne.lineTo(ax,ay);//point d'arrivé (coordonées)
     _root.nbr++;//incrémentation de nbr pour le nom des lignes 
     _root.calque++;// pareil pour calque pour leur hauteur
     _root.dx+=_root.lar;//aplication du décalage x 
     _root.ay+=_root.lon;//aplication du decalage y
}
//rectification des variables non-constantes
nbr=0;//pour la boucle
dx=txmax;//depart x
ax=txmax;//arrivé x
dy=tymax;//depart y
ay=tymax;//arrivé y

while((dx>=0)&&(ay>=0)){
      ligne="ligne"+nbr;//var pour nommer les lignes
      ligne=createEmptyMovieClip(ligne,calque);//crée un Movie clip vide
      ligne.lineStyle(1.0,0xFFFFFF,100);//definie les propriétés des lignes
      ligne.moveTo(dx,dy);//point de départ (coordonées)
      ligne.lineTo(ax,ay);//point d'arrivé (coordonées)
      _root.nbr++;// incrémentation de nbr pour nommer les lignes
      _root.calque++;// pareil pour calque pour la hauteur des lignesr
      _root.dx-=_root.lar;//aplication du décalage x 
      _root.ay-=_root.lon;//aplication du decalage y
}

//rectification des variables non-constantes
nbr=0;//pour la boucle
dx=txmax;//depart x
ax=txmax;//arrivé x
dy=0;//depart y
ay=0;//arrivé y

while((dx>=0)&&(ay<=tymax)){
      ligne="ligne"+nbr;//var pour nommer les lignes
      ligne=createEmptyMovieClip(ligne,calque);//crée un Movie clip vide      
      ligne.lineStyle(1.0,0xFFFFFF,100);//definie les propriétés des lignes
      ligne.moveTo(dx,dy);//point de départ (coordonées)
      ligne.lineTo(ax,ay);//point d'arrivé (coordonées)
      _root.nbr++;//incrémentation de nbr pour le nom des lignes
      _root.calque++;// pareil pour calque pour leur hauteur
      _root.dx-=_root.lar;//aplication du décalage x 
      _root.ay+=_root.lon;//aplication du decalage y
}
//rectification des variables non-constantes
nbr=0;//pour la boucle
dx=0;//depart x
ax=0;//arrivé x
dy=tymax;//depart y
ay=tymax;//arrivé y

while((dx<=txmax)&&(ay>=0)){
      ligne="ligne"+nbr;//var pour nommer les lignes
      ligne=createEmptyMovieClip(ligne,calque);//crée un Movie clip vide
      ligne.lineStyle(1.0,0xFFFFFF,100);//definie les propriétés des lignes
      ligne.moveTo(dx,dy);//point de départ (coordonées)
      ligne.lineTo(ax,ay);//point d'arrivé (coordonées)
      _root.nbr++;// incrémentation de nbr pour le nom des lignes
      _root.calque++;// pareil pour calque pour leur hauteur
      _root.dx+=_root.lar;//aplication du décalage x 
      _root.ay-=_root.lon;//aplication du decalage y
}
//fin

 Conclusion

il y aura une mise à jour lorsqu' un bug sera trouvé et rectifié.
Sur la miniature du screen on voit pas corectement la grille alors cliquez dessus si vous voulez voir ce que ca donne vraiment.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

26 juin 2007 12:39:55 :
Alignement du code(ajout des tabulation pour une meilleur clarté du code)
26 juin 2007 12:45:33 :
...

 Sources de la même categorie

Source avec Zip NAVIGATION DANS UN FICHIER XML par inaden
Source avec Zip Source avec une capture TWSCROLLBAR, UNE CLASSE DE SCROLLBAR SIMPLE ET PRATIQUE À UT... par Twinspirit
Source avec Zip Source avec une capture REBOND DE BALLON AVEC TWEEN par habibcode
Source avec Zip DIAPORAMA AS2 par ahmedhrbdj
Source avec Zip EXAMPLES DE TWEENS AS2 par rajas

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture DÉPLACER 2 POINTS QUI SONT RELIÉS par TallulahAkin
Source avec Zip Source avec une capture UTILISER DES CLIPS PLUTOT QUE DES SÉQUENCES par zoukozouko
Source avec Zip Source avec une capture RPG QUADRILLAGE DE DÉPLACEMENT "GRILLE DE COORDONNÉES" RPG par Fireflect

Commentaires et avis

Commentaire de q1proust77 le 26/06/2007 12:31:35

Voilà ma premiere source j'espere qu'elle va vous servir.

Commentaire de pegase31 le 26/06/2007 17:34:59 administrateur CS

c'est un peu le bordel ton code ... il y a 15000fois plus simple.
De plsu une grille "isométrique" n'est pas vraiment juste une série de losanges.
Dans ton cas il suffit de tracer une grille carré dans un clip et de retourner ton clip de 45°. Deux boucles imbriquées et une simple fonction "rotate" font le même effet.

Quel est l'interêt ?

Peg'

Commentaire de pegase31 le 26/06/2007 17:48:11 administrateur CS

je me suis amusé à bidouiller sur ton code .. mais as-tu testé avec d'autres valeurs que celles d'origine ? Je n'ai pas été trés loin dans les tests, car ça bug de suite ... ton code n'est pas assez dynamique, je pense ..

Peg'

Commentaire de q1proust77 le 26/06/2007 18:20:03

Premierement, je te remercie Peg' d'avoir répondu...

J'ai fait des tests et je ne trouve pas de bugs (j'en ai peut etre pas fait assez ?)
Peut tu me donné des valeurs pour voir à quoi ressemble le bug ?

Et puis pour les 2 boucles + rotate. Je n'y avais pas pensé, je devrais effectivement refaire mon code sous cette forme.

Enfin, Peux-tu me décrire ce qu'est pour toi une grille isometrique ?

Merci.

Commentaire de pegase31 le 26/06/2007 18:24:52 administrateur CS

une grille iso est ce que tu peux trouver sur tout les RPG en 3D Isométrique, tels de Dofus (pour ne pas le citer) et dont les carrés sont souvent le double de largeur que de hauteur !

Teste avec les valeurs 50 et 25, moi il manque des traits au centre de l'écran


Peg'

Commentaire de q1proust77 le 26/06/2007 18:27:07

J'ai rien dit j'ai trouvé des valeur pour le faire bug ...
En effet c'est pas jolie :p
J'vais repasser le code sur le systeme de boucle+rotate ca sera mieu je pense.

Commentaire de top30 le 26/06/2007 19:07:43

Tu devrais essayer ceci :




import flash.geom.* ;

var cellW :Number= 30 ;
var cellH :Number= 20 ;
var gridW :Number= 300 ;
var gridH :Number= 200 ;
var infos :Rectangle= new Rectangle( cellW, cellH, gridW, gridH ) ;
var style :Object= { size:3, color:0xFF6600, alpha:50 } ;
//

var myClip :MovieClip= getClipGrid( this, infos, style ) ;
myClip._x= 20 ; myClip._y= 20 ;
//

function getClipGrid( target:MovieClip, infos :Rectangle, style:Object, name:String, depth:Number )
:MovieClip{
if( depth== null ) depth= target.getNextHighestDepth() ;
if( name== null ) name= "Grid"+depth ;
//
var grid :MovieClip= target.createEmptyMovieClip( name, depth ) ;
var draw :MovieClip= grid.createEmptyMovieClip( "draw_mc", 0 ) ;
var mask :MovieClip= grid.createEmptyMovieClip( "mask_mc", 1 ) ;
//
var maxX :Number= Math.round(infos.width/infos.x) ;
var maxY :Number= Math.round(infos.height/infos.y) ;
//
if( !isNaN(maxX) && !isNaN(maxY) ){
grid.lineStyle( style.size, style.color, style.alpha );
//
var y :Number= -1 ;
while(++y<= maxY )
{
var x:Number= -1 ;
while(++x<= maxX )
{
var deltaX :Number= x*infos.x ;
var deltaY :Number= y*infos.y ;
//
grid.moveTo( deltaX, deltaY );
grid.lineTo( deltaX+infos.x, deltaY+infos.y );
//
grid.moveTo( deltaX, deltaY );
grid.lineTo( deltaX+infos.x, deltaY-infos.y );
}
}
mask.beginFill( 0xFF6600, 20 );
mask.lineTo( infos.width, 0 );
mask.lineTo( infos.width, infos.height );
mask.lineTo( 0, infos.height );
mask.lineTo( 0, 0 );
grid.setMask(mask);
}
return grid ;
}







Commentaire de q1proust77 le 26/06/2007 22:11:17

Merci top30 pour ce code qui est (beaucoup) plus clair et plus compréhensif.
A coté de celui ci mon code est ... enfin il ne sert plus a rien.
Apres quelques modifications j'ai obtenu la grille que je voulais.

Merci encore.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Besoin d'aide pour un editeur de niveau sous flash (en iso) [ par blacksun5 ] Bonjour a tous, je suis nouveau sur ce site et j'ai un gros probleme :Je suis entrain de créer un editeur de map en 3d iso (base de l'editeur de outsi Grille aléatoire sur movie clip [ par Burnside ] Bonjour,Je desirerai savoir comment l'on peut créer une grille vituelle dans un movie clip.Explication:J'ai un fichier Index.swf, qui load des autres Pb de srolling qui ralenti à donf dans un jeu iso [ par chippo ] Salut à tous...Voilà mon pb: je développe un peit jeu de role en vue iso, déplacement du perso au curseur pour l'instant... le truc, cque lorsque le p Grille Hexagonale [ par vincseize ] En fait certainement tout bete pour un mateux ...Je souhaiterais faire un plateau de jeu type grille hexagonale,sans avoir a dupliquer de mc (pas prop clic sur une forme cree avec createEmptyMovieClip [ par glipper ] Bonjour,je voudrais pouvoir executer une partie de code lorsque l'utilisateur clique sur une forme que j'ai créé avec "createEmptyMovieClip" :this.cre placer 4 cartes dans une grille de facon alleatoire [ par francisbay ] Bonjourj'ai une grille avec 4 case et 4 carte a positionner dans cette grille. Il faut qu'a chaque nouvelle partie les les cartes se trouve dans un e inompatibilité MX -->MX2004 [ par SuperDevy ] Voici mon code :// ParamètresOrigine_x = 30;Origine_y = 30;Cases_x = 7;Cases_y = 5;Largeur = 30;// Dessin de la grillethis.createEmptyMovieClip( createEmptyMovieClip & loadMovie [ par froggyS ] Bonjour !J'espère vraiment que quelqu'un pourra m'aider car je suis vraiment bloquée.Dans un fichier Flash, je crée un clip vide. Grille hexagonale FLAHMX ? [ par vincseize ] Je me souviens d avoir déja posé la question de comment réaliser une grille hexagonale en utilisant les line draw etc On m avait gentiment répondu, et Initiés : class AS 2 & createEmptyMovieClip [ par SuperDevy ] Salut les Flashkodeurs,J'ai une class Chariot extends MovieClip que j'appelle en faisant attachMovie (propriété dans la bibliothéque)L'objet créé est


Nos sponsors


Sondage...

Comparez les prix


HTC Magic

Entre 429€ et 429€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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,718 sec (4)

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