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 :

[Linux] Déplacement de plusieurs points


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Par défaut [Linux] Déplacement de plusieurs points
    Bonsoir,

    [Travail sous linux]

    Suite à un exercice, j'ai écris un programme qui m'affiche un point ce déplassant à l'écran.

    J'aimerai pouvoir en afficher plusieurs, comment faire ?

    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
    #include <stdlib.h>
    #include <stdio.h>
     
    //fonction point
    void point(int* x, int* y, int* dx, int* dy)
    {
    //affichage et déplacement du point
    	while(1)
    	{	
    		printf("\033[%ld;%ldH*",*y,*x);
     
    		fflush(stdout);
     
    		*x+=*dx;
    		*y+=*dy;
     
    		if((*x<1)||(*x>100))
    		{
    			*dx=-*dx;
    		}
     
    		if((*y<1)||(*y>30))
    		{
    			*dy=-*dy;
    		}
     		usleep(50000);
    		printf("\033[H\033[2J");
    	}
    }
     
    main()
    {
     
    	//déclaration des variables
    	int x,y,a,b;
    	int dx,dy,da,db;
     
    	// initialisation des variables		
    	x=5;
    	y=5;
    	dx=5;
    	dy=5;
     
        point(&x, &y, &dx, &dy);
     
     
    }
    Auriez-vous des idées ou des exemples de codes ?

    Merci d'avance

    Arnaud

  2. #2
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Salut,

    Il te faudrait passer un tableau de Point a ta fonction et itérerer dessus pour les afficher (a toi d'initialiser chaque point de sa position de départ et aussi sa vitesse de déplacement tant qu'a faire)

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Par défaut
    ok, mais on fait comment ?

    Tu aurais un exemple simple ?

  4. #4
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Tu commences par définir une structure d'un point dans un fichier Point.h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    typedef struct Point {
      int x,y,v; 
    };
    Tu alloues ensuite dans ton programme le nombre de point que tu souhaites , tu les initialises et tu appelles ta fonction d'affichage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Point points [2] ;
    points[0].x=5;points[0].y=5;points[0].v=5;
    points[1].x=15;points[1].y=50;points[1].v=5;
    affiche(points,2);
    Ensuite tu peux faire de différentes façons en dissociant une fonction pour le déplacement et une autre pour l'affichage (ici je les ai fusionnée)

    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
     
    void affiche (Point *pPoints, unsigned int pnbPoint) {
     
       int i;
      while (42){
         for(i=0;i<pnbPoint;i++) {
              //affichage du point
              printf("\033[%ld;%ldH*",pPoints[i].x,pPoints[i].y);
              //déplacement du point
               pPoints[i].x+=pPoints[i].v;
               pPoints[i].y+=pPoints[i].v;         
               //controle depassemet ecran
                if((pPoints[i].x<1)||(pPoints[i].x>100))
    		{
    			pPoints[i].x-=pPoints[i].v
    		}
     
    		if((pPoints[i].y<1)||(pPoints[i].y>30))
    		{
    			pPoints[i].y-=pPoints[i].v
    		}
          }
     	usleep(50000);
    	printf("\033[H\033[2J");
        }
     
    }
    PS:désolé pour l'indentation il faut que je trouve un éditeur.

  5. #5
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par hegros

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    typedef struct Point {
      int,x,y,v; 
    };
    Attention, tu as fait une faute de frappe: pas de virgule apres int et le nom du typedef doit etre apres la deuxieme accolade:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    typedef struct
    {
       int x, y, z;
    } Point;

  6. #6
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Citation Envoyé par DaZumba
    Attention, tu as fait une faute de frappe: pas de virgule apres int et le nom du typedef doit etre apres la deuxieme accolade:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    typedef struct
    {
       int x, y, z;
    } Point;
    Il me semblait qu'écrire le nom aprés la deuxiéme accolade ou après le mot clé struct ne changeait rien.Me trompe-je ?

Discussions similaires

  1. courbes moyennes en fonction de plusieurs points sur un graphique
    Par jeanGuignol dans le forum Débuter avec Java
    Réponses: 0
    Dernier message: 26/09/2008, 08h51
  2. [Sérialisaton] plusieurs points d'entrées
    Par Deallyra dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 22/05/2008, 15h12
  3. plusieurs points d'accés pour le même ESSID.
    Par bouha_1 dans le forum Réseau
    Réponses: 3
    Dernier message: 17/09/2007, 08h38
  4. [VB.NET2.0] Impossible de charger un plusieurs points d'arrêt
    Par daner06 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 12/06/2006, 00h28
  5. Thread - Déplacement d'un point à un autre
    Par aymron dans le forum Graphisme
    Réponses: 4
    Dernier message: 26/11/2005, 00h37

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