Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flash Pascal Discussion :

Tableau de constantes


Sujet :

Flash Pascal

  1. #1
    Rédacteur/Modérateur

    Tableau de constantes
    Bonjour !

    Je voudrais faire un dessin qui relie les points d'une figure, comme on en trouve dans les livres de coloriage. J'ai besoin de mettre dans mon code les coordonnées des points.

    J'ai essayé la déclaration d'un tableau de constantes, mais ça ne passe pas. Pourtant j'ai vérifié mon code et je crois qu'il est correct :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    const
     
      Figure: Array [1..82, 1..2] Of Integer=(
      (11,36),(11,35),(12,34),(12,33),(13,32),(14,31),(15,30),(16,29),(16,28),(17,27),
      (17,26),(17,25),(16,24),(14,24),(15,24),(14,23),(15,22),(16,21),(18,20),(19,19),
      (19,18),(18,17),(17,16),(17,15),(17,14),(17,13),(18,12),(19,11),(20,10),(21,10),
      (22,10),(23,10),(24,11),(25,12),(26,13),(26,14),(26,15),(26,16),(25,17),(24,18),
      (24,19),(25,20),(27,21),(28,22),(29,23),(27,24),(28,24),(29,24),(26,25),(26,26),
      (26,27),(27,28),(27,29),(28,30),(29,31),(30,32),(31,33),(31,34),(32,35),(32,36),
      (32,37),(31,37),(30,37),(29,37),(28,37),(27,37),(26,37),(25,37),(24,37),(23,37),
      (22,37),(21,37),(20,37),(19,37),(18,37),(17,37),(16,37),(15,37),(14,37),(13,37),
      (12,37),(11,37));


    J'ai aussi essayé quelque chose comme ça, mais je n'ai pas trouvé la bonne façon de l'écrire :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Var
      c: Array [1..82] Of Array [1..2] Of Integer;
     
    begin
      c[01]:=(11,36);c[02]:=(11,35);c[03]:=(12,34);c[04]:=(12,33);
      c[05]:=(13,32);c[06]:=(14,31);c[07]:=(15,30);c[08]:=(16,29);
      c[09]:=(16,28);c[10]:=(17,27);c[11]:=(17,26);c[12]:=(17,25);
      {...}


    Comment pourrais-je faire pour mettre dans mon code ce genre de données ?


  2. #2
    Expert éminent sénior
    arf, non le premier code est bon c'est un bug du compilateur...

    il transforme Figure[x, y] en Figure[x * 81 + y] alors que la constante est bien un tableau de tableaux...

    voici une version toujours non-officielle du compilateur avec IDE qui corrige cela

    nouveauté dans l'IDE, le preview se fait via l'ActiveX Flash...c'est plus facile de gérer le mode "Auto Refresh" qu'avec le player

    le mode "Auto Refresh" permet d'appliquer directement les modifications du code dans l'animation flash qui est recompilée et rechargée automatiquement ! (il faut cocher la case pour cela)



    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    program test;
     
    uses            
      Flash8;
     
    const 
      Figure: Array [1..82, 1..2] Of Integer=(
      (11,36),(11,35),(12,34),(12,33),(13,32),(14,31),(15,30),(16,29),(16,28),(17,27),
      (17,26),(17,25),(16,24),(14,24),(15,24),(14,23),(15,22),(16,21),(18,20),(19,19),
      (19,18),(18,17),(17,16),(17,15),(17,14),(17,13),(18,12),(19,11),(20,10),(21,10),
      (22,10),(23,10),(24,11),(25,12),(26,13),(26,14),(26,15),(26,16),(25,17),(24,18),
      (24,19),(25,20),(27,21),(28,22),(29,23),(27,24),(28,24),(29,24),(26,25),(26,26),
      (26,27),(27,28),(27,29),(28,30),(29,31),(30,32),(31,33),(31,34),(32,35),(32,36),
      (32,37),(31,37),(30,37),(29,37),(28,37),(27,37),(26,37),(25,37),(24,37),(23,37),
      (22,37),(21,37),(20,37),(19,37),(18,37),(17,37),(16,37),(15,37),(14,37),(13,37),
      (12,37),(11,37));
    var
      i: Integer;
     begin
       _root.lineStyle(1, 0);
       _root.moveTo(0,0);
       _root.moveto(Figure[1,1], Figure[1,2]);
     
       for i := 2 to 82 do
           _root.lineTo(Figure[i,1], Figure[i,2]);
     end.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Rédacteur/Modérateur

    La fonction preview est très pratique.

    Merci pour le code !

    Je vais retravailler un peu mon exemple avant de le poster.


  4. #4
    Rédacteur/Modérateur

    Bonsoir !

    Voici un exemple de code Flash Pascal, qui montre comment on peut se servir d'un tableau de constantes pour dessiner une figure en reliant des points.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    Program Contour;
     
    {$FRAME_WIDTH 400}
    {$FRAME_HEIGHT 400}
    {$BACKGROUND $eeeeff}
     
    Uses
      Flash8;
     
    Const 
      Coord: Array [1..82, 1..2] Of Integer=(
      (11,36),(11,35),(12,34),(12,33),(13,32),
      (14,31),(15,30),(16,29),(16,28),(17,27),
      (17,26),(17,25),(16,24),(15,24),(14,24),
      (14,23),(15,22),(16,21),(18,20),(19,19),
      (19,18),(18,17),(17,16),(17,15),(17,14),
      (17,13),(18,12),(19,11),(20,10),(21,10),
      (22,10),(23,10),(24,11),(25,12),(26,13),
      (26,14),(26,15),(26,16),(25,17),(24,18),
      (24,19),(25,20),(27,21),(28,22),(29,23),
      (29,24),(28,24),(27,24),(26,25),(26,26),
      (26,27),(27,28),(27,29),(28,30),(29,31),
      (30,32),(31,33),(31,34),(32,35),(32,36),
      (32,37),(31,37),(30,37),(29,37),(28,37),
      (27,37),(26,37),(25,37),(24,37),(23,37),
      (22,37),(21,37),(20,37),(19,37),(18,37),
      (17,37),(16,37),(15,37),(14,37),(13,37),
      (12,37),(11,37));
     
    Var
      i, j: Integer;
     
    Begin
     
      _root.lineStyle(1,$000055);
     
      For j := 1 To 10 Do
      Begin
     
        _root.moveTo(j*11-j,j*37-j);
     
        For i := 1 To 82 Do
        Begin
     
          _root.lineTo(j*Coord[i,1]-j,j*Coord[i,2]-j);
     
        End;
     
      End;
     
    End.

  5. #5
    Expert éminent sénior
    et voici une petite variante



    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    program Contour;
     
    {$FRAME_WIDTH 400}
    {$FRAME_HEIGHT 400}
    {$BACKGROUND $eeeeff}
     
    uses
      Flash8;
     
    const 
      Coord: array [1..82, 1..2] of Integer=(
      (11,36),(11,35),(12,34),(12,33),(13,32),
      (14,31),(15,30),(16,29),(16,28),(17,27),
      (17,26),(17,25),(16,24),(15,24),(14,24),
      (14,23),(15,22),(16,21),(18,20),(19,19),
      (19,18),(18,17),(17,16),(17,15),(17,14),
      (17,13),(18,12),(19,11),(20,10),(21,10),
      (22,10),(23,10),(24,11),(25,12),(26,13),
      (26,14),(26,15),(26,16),(25,17),(24,18),
      (24,19),(25,20),(27,21),(28,22),(29,23),
      (29,24),(28,24),(27,24),(26,25),(26,26),
      (26,27),(27,28),(27,29),(28,30),(29,31),
      (30,32),(31,33),(31,34),(32,35),(32,36),
      (32,37),(31,37),(30,37),(29,37),(28,37),
      (27,37),(26,37),(25,37),(24,37),(23,37),
      (22,37),(21,37),(20,37),(19,37),(18,37),
      (17,37),(16,37),(15,37),(14,37),(13,37),
      (12,37),(11,37));
     
    var
      i, j: Integer;
      m1,m2 : MovieClip;
    begin
     
      m1 := MovieClip.Create(nil, 'm1', 0);
      m1.lineStyle(1,$000055);
      m1.beginFill($ffffff);
      m1.moveTo(11,37);  
     
      for i := 1 to 82 do
      begin
        m1.lineTo(Coord[i,1], Coord[i,2] );
      end;
     
      for j := 1 to 10 do
      begin
        m2 := m1.duplicateMovieClip(IntToStr(j), j);
        m2._x := 15 * j;
        m2._y := 10 * j;
        m2._xscale := 100 + 5 * j * j;
        m2._yscale := 100 + 5 * j * j; 
      end;
     
    end.


    NB: ne me demandez pas pourquoi il faut passer par m1, si on duplique _root directement ça ne fonctionne pas

    si vous n'avez pas la déclaration de duplicateMovieClip dans la classe MovieClip la voici
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    type
     MovieClip=external class
      constructor Create(Parent:MovieClip; Name:string; Depth:integer) as Parent.createEmptyMovieClip;
      function duplicateMovieClip(name: string; depth: Integer): MovieClip;
    ...
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

###raw>template_hook.ano_emploi###