IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Turbo Pascal Discussion :

[TP7][Débutant] Effectuer un scrolling ?


Sujet :

Turbo Pascal

  1. #1
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Par défaut [TP7][Débutant] Effectuer un scrolling ?
    bonjour à tous, je veux effectuer un defilement de texte en turbo pascal mais je n'y connais presque rien en graphisme.
    si vous pouviez me donner les grandes lignes, ou les procedures et fonctions dont j'ai besoin.
    merci d'avance pour votre aide

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 487
    Par défaut
    Citation Envoyé par genie007 Voir le message
    bonjour à tous, je veux effectuer un defilement de texte en turbo pascal mais je n'y connais presque rien en graphisme.
    si vous pouviez me donner les grandes lignes, ou les procedures et fonctions dont j'ai besoin.
    merci d'avance pour votre aide
    1 – il y a tout dans le help
    2 - Regard ça peut être c’est ce que tu cherches
    http://www.developpez.net/forums/sho...d.php?t=476037
    http://www.developpez.net/forums/sho...d.php?t=418490

  3. #3
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Par défaut
    bonjour,
    merci beaucoup pour ta réponse dot_net.
    j'ai une autre question, comment faire pour remplir un cercle avec une couleur?
    j'ai essayé avec les procedures floodfill et setfillstyle mais ça ne marche pas, peut etre que je n'ai pas su les utiliser
    et encore merci.

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Gia,

    L'aide de TP7 donne un exemple, qui justement concerne un cercle.

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 487
    Par défaut
    Citation Envoyé par genie007 Voir le message
    bonjour,
    merci beaucoup pour ta réponse dot_net.
    j'ai une autre question, comment faire pour remplir un cercle avec une couleur?
    j'ai essayé avec les procedures floodfill et setfillstyle mais ça ne marche pas, peut etre que je n'ai pas su les utiliser
    et encore merci.
    Tu trouveras tous ce que tu veux dans le help

    Je pense voici le code que tu es entrain de chercher
    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
    uses Graph;
     
    var
     Gd, Gm: Integer;
     Radius: Integer;
    begin
     Gd := Detect;
     InitGraph(Gd, Gm, 'c:\tp\bgi\');
     if GraphResult <> grOk then
       Halt(1);
       setcolor(4);
     SetFillStyle(1, 4);
        PieSlice(100, 100, 0, 360, 100);
     
     Readln;
     CloseGraph;
    end.

  6. #6
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Par défaut
    merci beaucoup pour votre aide
    dot_net c'est exactement le code que je cherchais merci beaucoup
    mais bon ça marche que pour un seul cercle.
    je vous explique ce que je veux faire
    je veux écrire une lettre un I par exemple avec des cercles remplis et qui bouge,
    mes questions commencent à pleuvoir c'est la première fois que je travaille avec des graphes

  7. #7
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Fao,
    Citation Envoyé par genie007 Voir le message
    merci beaucoup pour votre aide
    dot_net c'est exactement le code que je cherchais merci beaucoup
    Le code cité est une copie de l'aide de TP !

    Évite de parler de graphes alors qu'il s'agit de graphisme. Le mot graphe a une signification bien précise, totalement en dehors du domaine de l'affichage/impression de dessins.

    Citation Envoyé par genie007 Voir le message
    mais bon ça marche que pour un seul cercle.
    je vous explique ce que je veux faire
    je veux écrire une lettre un I par exemple avec des cercles remplis et qui bouge, pour imiter un journal lumineux.
    Est-il si difficile de penser à faire la même chose pour plusieurs cercles ?

  8. #8
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Par défaut
    j'y ai pensé bien sur, mais quand j'effectue le scrolling j'ai pas le resultat voulu c'est tou

  9. #9
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 487
    Par défaut
    Citation Envoyé par genie007 Voir le message
    merci beaucoup pour votre aide
    dot_net c'est exactement le code que je cherchais merci beaucoup
    mais bon ça marche que pour un seul cercle.
    je vous explique ce que je veux faire
    je veux écrire une lettre un I par exemple avec des cercles remplis et qui bouge, pour imiter un journal lumineux.
    mes questions commencent à pleuvoir c'est la première fois que je travaille avec des graphes
    La seul chose que je peux dire c’est commence a développez ton application et si il y a un problème on est ici

  10. #10
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Par défaut
    c'est bon j'ai eu ce que je voulais merci beaucoup pour ton aide dot_net j'ai travaillé avec la procédure que tu m'a indiqué .
    maintenant ma question est : quand je travaille chaque lettre à part, est ce que je pourrais après concaténer les lettres et les afficher afin qu'elles paraissent circulaires?
    thanks beaucoup

  11. #11
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Fai,

    Bien sûr que tu peux.

    Fais-toi un petit dessin, et regarde quelles variations de coordonnées il faudra faire.

  12. #12
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 487
    Par défaut
    Citation Envoyé par genie007 Voir le message
    c'est bon j'ai eu ce que je voulais merci beaucoup pour ton aide dot_net j'ai travaillé avec la procédure que tu m'a indiqué .
    maintenant ma question est : quand je travaille chaque lettre à part, est ce que je pourrais après concaténer les lettres et les afficher afin qu'elles paraissent circulaires?
    thanks beaucoup
    Tu pourras le faire facilement
    Fait un effort et je te garanti mon aide

  13. #13
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Par défaut
    merci beaucoup pour votre aide
    j'ai commencé à faire les lettres et les faire bouger
    quand je les termine si je bloque je poserais des questions, et encore merci

  14. #14
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Par défaut
    slt à tous, j'ai rencontré un problème, j'ai fais des procedures avec les lettres a et b, et je veux rentrer une expression contenant ces deux lettres pour qu'elle m'affiche un texte defilant j'ai essayé des trucs mais ça ne marche pas
    sachant que quand j'utlise pas les procedures ça marche (dans ce cas l'utilisateur ne peut pas choisir l'exprssion )
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    program expression;
    uses crt,graph;
    var f,b,pos: integer;pilotgraphiq,modegraphiq:smallint;
    x: string[50];
    let:shortstring;
    procedure lettreA (i,j:integer;color:word;var position:integer);
    var k,h: integer;
    begin
        setcolor(color);
        setfillstyle(1,color);
        setbkcolor(black);
        h:=j;
         for k:=1 to 7 do
            begin
            pieslice(i,j+14,0,360,3);
            j:=j+7;
            end;
        j:=h;
        pieslice(i+7,j+7,0,360,3);
        pieslice(i+14,j,0,360,3);
        pieslice(i+21,j+7,0,360,3);
        i:=i+28;
        position:=i;
             for k:=1 to 7 do
              begin
              pieslice (i,j+14,0,360,3);
              j:=j+7;
              end;
          j:=h+28;
          for k:=1 to 4 do
             begin
             pieslice(i,j,0,360,3);
             i:=i-7;
             end;
        readln;
    end;
     
    procedure lettreB(i,j:integer;color:word;var position:integer);
    var l,h,k:integer;
    begin
        setbkcolor(black);
        setcolor(color);
        setfillstyle(1,color);
        h:=j;
        l:=i;
       for k:=1 to 9 do
           begin
           pieslice(i,j,0,360,3);
           j:=j+7;
           end;
       j:=h;
       for k:=1 to 3 do
           begin
           i:=i+7;
           pieslice(i,j,0,360,3);
           end;
       i:=i+7;
       position:=i;
       for k:=1 to 3 do
           begin
           j:=j+7;
           pieslice(i,j,0,360,3);
           end;
       for k:=1 to 3 do
           begin
           i:=i-7;
           pieslice(i,j+7, 0,360,3);
           end;
       i:=l+4*7;
       j:=j+14;
       for k:=1 to 3 do
           begin
           pieslice(i,j,0,360,3);
           j:=j+7;
           end;
       for k:=1 to 3 do
           begin
           i:=i-7;
           pieslice(i, j,0,360,3);
           end;
       readln;
    end;
     
    begin
    write ('entrez votre expression');
    read(x);
    f:=400;
    pilotgraphiq:=detect;
    initgraph(pilotgraphiq,modegraphiq,'C:\Program Files\TP\BGI\');
    if graphresult=0 then
    begin
    setgraphmode(modegraphiq);
           for b:=1 to length(x) do;
             begin
             let:=copy(x,b,1);
             if let='A' then
                  begin
                      pos:=f;
                       lettreA(f,400,red,f);
                       delay(10);
                       lettreA(pos,400,black,f);
                       lettreA (pos-1,400,red,f);
                    end;
     
              if let='B' then
                begin
                pos:=f;
                lettreB(f,400,red,f);
                delay(10);
                lettreB(pos,400,black,f);
                lettreB (pos-1,400,red,f);
               end;
            end;
    f:=f-1;
    readln;readln;
    closegraph;
    end;
    readln;readln;
    end.
    merci d'avance

  15. #15
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 487
    Par défaut
    Fait un petit dessin de ton texte défilante et poste le pour savoir ce que tu veux faire exactement

  16. #16
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Kao,
    Citation Envoyé par genie007 Voir le message
    slt à tous, j'ai rencontré un problème, j'ai fais des procedures avec les lettres a et b, et je veux rentrer une expression contenant ces deux lettres pour qu'elle m'affiche un texte defilant j'ai essayé des trucs mais ça ne marche pas
    sachant que quand j'utlise pas les procedures ça marche (dans ce cas l'utilisateur ne peut pas choisir l'exprssion )

    merci d'avance
    Tu as indenté ton code, c'est bien.

    Avec une indentation régulière, c'est encore mieux:
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    program expression;
     
    uses crt, graph;
     
    var 
      f, b, Pos : Integer;
      pilotgraphiq, modegraphiq : Smallint;
      x : string[50];
      let : shortstring;
     
    procedure lettreA(i, j : Integer; Color : Word; var Position : Integer);
    var 
      k, h : Integer;
    begin
      setcolor(Color);
      setfillstyle(1,Color);
      setbkcolor(black);
      h := j;
      for k := 1 to 7 do
      begin
        pieslice(i, j + 14,0,360,3);
        j := j + 7;
      end;
      j := h;
      pieslice(i + 7,j + 7,0,360,3);
      pieslice(i + 14,j, 0,360,3);
      pieslice(i + 21,j + 7,0,360,3);
      i := i + 28;
      Position := i;
      for k := 1 to 7 do
      begin
        pieslice(i, j + 14,0,360,3);
        j := j + 7;
      end;
      j := h + 28;
      for k := 1 to 4 do
      begin
        pieslice(i, j, 0,360,3);
        i := i - 7;
      end;
      Readln;
    end;
     
    procedure lettreB(i, j : Integer; Color : Word; var Position : Integer);
    var 
      l, h, k : Integer;
    begin
      setbkcolor(black);
      setcolor(Color);
      setfillstyle(1,Color);
      h := j;
      l := i;
      for k := 1 to 9 do
      begin
        pieslice(i, j, 0,360,3);
        j := j + 7;
      end;
      j := h;
      for k := 1 to 3 do
      begin
        i := i + 7;
        pieslice(i, j, 0,360,3);
      end;
      i := i + 7;
      Position := i;
      for k := 1 to 3 do
      begin
        j := j + 7;
        pieslice(i, j, 0,360,3);
      end;
      for k := 1 to 3 do
      begin
        i := i - 7;
        pieslice(i, j + 7, 0,360,3);
      end;
      i := l + 4 * 7;
      j := j + 14;
      for k := 1 to 3 do
      begin
        pieslice(i, j, 0,360,3);
        j := j + 7;
      end;
      for k := 1 to 3 do
      begin
        i := i - 7;
        pieslice(i, j, 0,360,3);
      end;
      Readln;
    end;
     
    begin
      Write ('entrez votre expression');
      Read(x);
      f := 400;
      pilotgraphiq := detect;
      initgraph(pilotgraphiq, modegraphiq, 'C:\Program Files\TP\BGI\');
      if graphresult = 0 then
      begin
        setgraphmode(modegraphiq);
        for b := 1 to Length(x) do;
        begin
          let := Copy(x, b, 1);
          if let = 'A' then
          begin
            Pos := f;
            lettreA(f, 400,red, f);
            delay(10);
            lettreA(Pos, 400,black, f);
            lettreA(Pos - 1,400,red, f);
          end;
     
          if let = 'B' then
          begin
            Pos := f;
            lettreB(f, 400,red, f);
            delay(10);
            lettreB(Pos, 400,black, f);
            lettreB(Pos - 1,400,red, f);
          end;
        end;
        f := f - 1;
        Readln;
        Readln;
        closegraph;
      end;
      Readln;
      Readln;
    end.
    Il manque des lignes vides pour séparer les blocs logiques, des commentaires...

    Sinon, je ne vois aucune boucle gérant le déplacement de ta chaîne ?

    ps : je pense que tu as pris une mauvaise direction en écrivant une procédure pour chaque lettre.
    Il vaudrait mieux définir une structure capable de contenir les données pour une lettre, quelle que soit cette lettre, et une procédure utilisant cette structure, tenant compte de la position, couleur, rotation éventuelle, et même, pourquoi, effet miroir...

    ps2 : pourquoi tous ces ReadLn doublés ?

  17. #17
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Par défaut
    pour les readln c'est une habitude, je vois pas pourquoi je les double d'ailleurs
    je déplace ma chaine en redéssinant l'expression en noir et la dessiner dans un autre coin en rouge

    et pour la procedure dont tu parles j'allais la faire une fois que ce code marche sinon je peux pas la faire

  18. #18
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Kia,
    Citation Envoyé par genie007 Voir le message
    je déplace ma chaine en redéssinant l'expression en noir et la dessiner dans un autre coin en rouge
    Oui, mais moi, tout ce que je vois, c'est
    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
    begin
    ...
      if graphresult = 0 then
      begin
        setgraphmode(modegraphiq);
        for b := 1 to Length(x) do;
        begin
          let := Copy(x, b, 1);
          if let = 'A' then
          begin
            Pos := f;
            lettreA(f, 400,red, f);
            delay(10);
            lettreA(Pos, 400,black, f);
            lettreA(Pos - 1,400,red, f);
          end;
     ... idem pour B
     
        f := f - 1;
        Readln;
        Readln;
        closegraph;
      end;
      Readln;
      Readln;
    end.
    Donc tu traces les lettres, tu les effaces, et tu les déplaces légèrement d'un pixel.
    Quasiment invisible si ça va assez vite.

    Et c'est tout !! pas le moindre défilement en vue en dehors de ça.

    Si tu veux voir quelque chose, commence par augmenter le délai entre le premier tracé et la suite (10 ms, c'est très petit pour notre système visuel), ET fait un déplacement suffisant pour être observable facilement (10 ou 20 pixels, par exemple).

    ps : quand tu fais
    il est plus simple de faire
    et par conséquent, plus simple encore d'utiliser directement x[b].

  19. #19
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Par défaut
    merci pour ton aide droggo

Discussions similaires

  1. [TP7][Débutant] Utilisation de la souris
    Par genie007 dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 08/05/2008, 16h18
  2. [TP7][Débutant] Lire à partir d'un fichier doc
    Par adloufi dans le forum Turbo Pascal
    Réponses: 18
    Dernier message: 01/05/2008, 20h35
  3. Effectuer du scrolling
    Par i.pollux dans le forum SDL
    Réponses: 1
    Dernier message: 03/10/2006, 10h02
  4. Effectuer un scrolling automatique
    Par chandlerbing77 dans le forum Access
    Réponses: 1
    Dernier message: 24/08/2006, 17h44
  5. [Débutant] Effectuer une opération
    Par zsoh dans le forum Assembleur
    Réponses: 3
    Dernier message: 11/01/2006, 22h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo