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

C Discussion :

ncurses Probleme de mouvement


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 50
    Par défaut ncurses Probleme de mouvement
    bonjour,
    Je souhaite faire avancer un train sur mon écran, et ce train doit passer a travers une voie unique.
    J'utilise donc ncurses.h

    Quand je fais
    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
     
    //Compiler avec l'option -lncurses
     
    #include <stdlib.h>
    #include <stdio.h>
    #include <unistd.h>                  /*  for sleep()  */
    #include <curses.h>
     
    int main(int argc, char * argv[]) {
      initscr();              // Open curses
      noecho();             
      keypad(stdscr,TRUE);  
     
      addstr("                           voie unique        \n");
      addstr("                       +--------------------+\n");
      addstr("                       |                         |\n");
      addstr("                       |                         |\n");
      addstr("                       |                         |\n");
      addstr("                       |                         |\n");
      addstr("                       +--------------------+\n");
     
    int x=3;
    int i=5;
    	for( i=5;i <80; i++){
      		mvprintw(x,i,"<TGV>");
    		mvaddch(x,i-1,' ');
    		refresh();
    		usleep(80000);
    }
      endwin();   // Close curses
     
    }
    mes trains n'avancent pas correctement (regulierement, tous les 8 caractères, j'ai un caractere qui ne s'efface pas.

    Et si je supprime mon carré, ca marche bien :

    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
     
    //Compiler avec l'option -lncurses
     
    #include <stdlib.h>
    #include <stdio.h>
    #include <unistd.h>                  /*  for sleep()  */
    #include <curses.h>
     
    int main(int argc, char * argv[]) {
      initscr();              // Open curses
      noecho();             
      keypad(stdscr,TRUE);  
     
    int x=3;
    int i=5;
    	for( i=5;i <80; i++){
      		mvprintw(x,i,"<TGV>");
    		mvaddch(x,i-1,' ');
    		refresh();
    		usleep(80000);
    }
      endwin();   // Close curses
     
    }
    Que puis je faire pour que ca marche avec mon carré dessiné à l'écran?

    Merci
    Julie

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par nopnop Voir le message
    Je souhaite faire avancer un train sur mon écran, et ce train doit passer a travers une voie unique.
    <...>
    Que puis je faire pour que ca marche avec mon carré dessiné à l'écran?
    "Ca marche", ça correspond à ce que tu as dans ta tête, mais on est pas dans ta tête alors il faut expliquer...

    Tu voudrais quoi ? Que le train n'efface pas le rectangle ? (ou tu moins, le restitue ? C'est pas très clair ta question...

  3. #3
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 50
    Par défaut
    Salut,
    Pardon de na pas avoir été claire. Je pense que ca vaut le coup d'executer le code (si vous êtes sous linux) pour voir ce que donne les 2 progs.

    Dans la cas qui "marche",j'ai bien l'impression d'un train ( <TGV> ) qui se déplace sur l'écran de la gauche vers la droite.

    Dans le cas qui ne marche pas, le train se déplace correctement pendant 2 secondes, puis ensuite, il se met à laisser des < sur son chemin.
    Donc, a la fin de l'animation, au lieu d'avoir <TGV> écrit à droite de l'écran, j'ai
    < < <T <T <TGV <TGV>
    On peut voir que les < laissés sont espacés régulièrement (tous les 8 charactères).

    Voila, est ce plus clair?
    Merci

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par nopnop Voir le message
    Dans la cas qui "marche",j'ai bien l'impression d'un train ( <TGV> ) qui se déplace sur l'écran de la gauche vers la droite.
    J'ai essayé le premier code (Windows/PDCurses), il ne laisse pas de traces...
    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
     
    #include <stdlib.h>
    #include <stdio.h>
    #include <curses.h>
     
    #include "psleep/inc/psleep.h"
     
    int main (void)
    {
       initscr ();                  // Open curses
       noecho ();
       keypad (stdscr, TRUE);
     
       addstr ("                           voie unique        \n");
       addstr ("                       +--------------------+\n");
       addstr ("                       |                         |\n");
       addstr ("                       |                         |\n");
       addstr ("                       |                         |\n");
       addstr ("                       |                         |\n");
       addstr ("                       +--------------------+\n");
     
       int x = 3;
       int i = 5;
       for (i = 5; i < 80; i++)
       {
          mvprintw (x, i, "<TGV>");
          mvaddch (x, i - 1, ' ');
          refresh ();
          msleep (80);
       }
       endwin ();                   // Close curses
       return 0;
    }
    Ce qui manque est ici :

    http://delahaye.emmanuel.free.fr/clib/psleep/

Discussions similaires

  1. Probleme d'arret de mouvement sur objet
    Par PascalStl dans le forum Programmation multimédia/Jeux
    Réponses: 14
    Dernier message: 20/05/2013, 20h01
  2. Réponses: 42
    Dernier message: 05/08/2008, 20h41
  3. probleme ncurses avec timeout
    Par darkgenesx dans le forum Linux
    Réponses: 0
    Dernier message: 08/12/2007, 22h27
  4. Probleme de detection de mouvement
    Par laurrrette dans le forum Traitement d'images
    Réponses: 3
    Dernier message: 28/02/2007, 13h02
  5. probleme mouvement dans un paysage
    Par nonoRedDevils dans le forum OpenGL
    Réponses: 24
    Dernier message: 24/06/2004, 12h12

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