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 :

Mouvement d'un point avec la SDL


Sujet :

C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ergonome
    Inscrit en
    Février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Février 2017
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Mouvement d'un point avec la SDL
    Bonjours à tous

    je débute dans la programmation et j'ai comme projet de faire apparaître et disparaître un point à des endroit aléatoire. j'utilise SDL comme interface graphique. Et pour info je programme sous rasbian dans le terminal nano

    voici ce que j'ai déja réussi a 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
    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
     
    int main( int argc, char *argv[ ] )
    {
        SDL_Surface *screen;
        int lastrender = 0;
        if( SDL_Init( SDL_INIT_JOYSTICK | SDL_INIT_VIDEO ) == -1 )
        {
            printf( "Can't init SDL:  %s\n", SDL_GetError( ) );
            return EXIT_FAILURE;
        }
     
        atexit( SDL_Quit );
        screen = SDL_SetVideoMode( 640, 480, 16, SDL_HWSURFACE );
     
        if( !screen)
        {
            printf( "Can't set video mode: %s\n", SDL_GetError( ) );
            return EXIT_FAILURE;
        }
     
        SDL_Rect position;
        SDL_Surface *rectangle = NULL;
        rectangle = SDL_CreateRGBSurface(SDL_HWSURFACE, 20, 20, 16, 0, 0, 0, 0);
     
        position.x = screen->h/2;
        position.y = screen->h/2;
        bool jeu = false;
        SDL_Event event;
        while(!jeu)
        {
        SDL_FillRect(rectangle, NULL, SDL_MapRGB(screen->format, 255, 255, 255));
        SDL_BlitSurface(rectangle, NULL, screen, &position); // Collage de la surface sur l'écran
        SDL_Flip(screen); // Mise à jour de l'écran
       // SDL_Delay( 100 );
        SDL_FillRect(rectangle, NULL, SDL_MapRGB(screen->format, 0, 0, 0));
        SDL_BlitSurface(rectangle, NULL, screen, &position); // Collage de la surface sur l'écran
     
     
        }
    	SDL_Delay( 3000 );
     
        return EXIT_SUCCESS;
    }

    donc j'ai réussi a crée une fenetre et afficher un point. je ne sais pas comment faire la suite, si vous pouvez m'aider svp ?


    Cordialement Nystag

  2. #2
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Qu'est-ce qui te bloque exactement pour la suite ?

    Attention, ton code est un mélange de C et de C++, il va falloir clarifier cela (i.e.: choisir). Selon le langage, les fonctions de manipulation de nombres pseudo-aléatoires sont déclarées respectivement dans stdlib.h ou dans random.

    Ce projet terminé, penche-toi assez vite sur la gestion des évènements (fenêtre, clavier, souris) avec SDL. Tous les tutoriels de base en font mention. Voici quelques objectifs à la portée d'un débutant, par ordre de difficulté croissante :

    • faire en sorte qu'une pression sur la touche d'échappement termine le programme en quittant la boucle principale ;
    • faire suivre le curseur de la souris à ton point ;
    • déplacer ton point en ligne droite à une vitesse donnée, puis le faire rebondir sur les bords de la fenêtre ;
    • déplacer ton points avec les flèches du clavier ;
    • etc..

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Tu as affiché un point c'est bien. Si tu veux l'afficher autre part et bien il te suffit de... modifier les coordonnées de son affichage.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Ergonome
    Inscrit en
    Février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Février 2017
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    merci pour vos réponse

    j'ai réussi à faire ce que je voulais de la manière suivante :

    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
    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
     
    int main( int argc, char *argv[ ] )
    {
        SDL_Surface *screen;
        int lastrender = 0;
        if( SDL_Init( SDL_INIT_JOYSTICK | SDL_INIT_VIDEO ) == -1 )
        {
            printf( "Can't init SDL:  %s\n", SDL_GetError( ) );
            return EXIT_FAILURE;
        }
     
        atexit( SDL_Quit );
        screen = SDL_SetVideoMode( 640, 480, 16, SDL_HWSURFACE );
     
        if( !screen)
        {
            printf( "Can't set video mode: %s\n", SDL_GetError( ) );
            return EXIT_FAILURE;
        }
     
        SDL_Rect position;
        SDL_Surface *rectangle = NULL;
        rectangle = SDL_CreateRGBSurface(SDL_HWSURFACE, 10, 10, 16, 0, 0, 0, 0);
     
        position.x = screen->w/2;
        position.y = screen->h/2;
        bool jeu = false;
        SDL_Event event;
        while(!jeu)
        {
        SDL_FillRect(rectangle, NULL, SDL_MapRGB(screen->format, 255, 255, 255));
        SDL_BlitSurface(rectangle, NULL, screen, &position); // Collage de la surface sur l'écran
        SDL_Flip(screen); // Mise à jour de l'écran
       // SDL_Delay( 100 );
        SDL_FillRect(rectangle, NULL, SDL_MapRGB(screen->format, 0, 0, 0));
        SDL_BlitSurface(rectangle, NULL, screen, &position); // Collage de la surface sur l'écran
        position.x = rand()%screen->w;
        position.y = rand()%screen->h;
     
     
    	SDL_Delay( 2000 );
     
     
        }
     
        exit(0)
     
        return EXIT_SUCCESS;
    }
    mais mon programme ne veut pas se fermer malgré que j'ai ajouté un exit(0)

    pourriez vous m'aider svp

  5. #5
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Ce programme ne compile pas, il manque un point-virgule. Quoi qu'il en soit, tu n'as pas besoin d'appeler exit ici.

    Quelle est la condition de sortie de ta boucle principale ?

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Ergonome
    Inscrit en
    Février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Février 2017
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    comme condition de sortie j'en ai pas encore mis, mais j'aimerais que ça soit lorsque l'on press une certaine touche (ex : echap ) je sors de la boucle. es-ce possible ?

  7. #7
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Oui, il suffit d'écouter les événements, et de détecter l'appui sur la bonne touche.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  8. #8
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Citation Envoyé par mrnystag Voir le message
    comme condition de sortie j'en ai pas encore mis
    D'où :

    Citation Envoyé par mrnystag Voir le message
    mon programme ne veut pas se fermer
    ..tu en déduiras de toi-même la relation de cause à effet.


    Maintenant, lorsque ternel écrit :

    Citation Envoyé par ternel Voir le message
    il suffit d'écouter les événements
    ..il faut utiliser SDL_PollEvent au sein d'une seconde boucle imbriquée dans la boucle principale. Il y a de nombreux exemples dans les tutoriels SDL. Cette page t'explique comment procéder : http://sdl.beuc.net/sdl.wiki/SDL_PollEvent . Attention : la page pré-citée est issue de la documentation de la SDL 1.2, qui est plus qu'obsolète. La documentation à jour se trouve ici mais je trouve l'ancien exemple plus parlant, et il est encore valide avec la SDL 2.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Ergonome
    Inscrit en
    Février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Février 2017
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    merci beaucoup pour votre aide

  10. #10
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Juste une petite remarque : La SDL est une bibliothèque C, qui n'est donc pas des plus simples à utiliser quand on fait du C++ (en particulier la gestion des ressources). À moins que tu aies de bonnes raisons de vouloir la SDL, je te conseille de regarder du côté de SFML, qui est assez proche en terme de philosophie, mais qui est écrite en C++, et donc plus simple à utiliser.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Ergonome
    Inscrit en
    Février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Février 2017
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Merci pour vos conseil


    alors la j'ai un autre petit soucis enfaite je fais déplacer un point sur un axe y fixe mais le problème je n'arrive pas a gerer la vitesse le deplacement est trop lent malgré que j'ai modifier le SDL_ delay

    pourriez vous m'aider voici mon programme

    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
     
    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
     
    // Permet de pouvoir sortir du programme en appuyant sur la croix
    class SystemManager {
        public:
            // Here we will just have a couple public members for example purposes.
            bool running;
            SDL_Event events;
            void inputManager(); // Handle input.
            void renderingManager(); // Handle drawing pretty pictures.
    };
     
    void SystemManager::inputManager() {
        while(SDL_PollEvent(&events)) {
            if(events.type == SDL_QUIT)
                running = false;
        }
    }
     
    void SystemManager::renderingManager() {
        // Draw pretty pictures...
    }
     
    int main( int argc, char *argv[ ] )
    {
        SDL_Surface *screen;
        SystemManager sysMgr;
        sysMgr.running = true;
        int lastrender = 0;
        int dirX = 1;
        if( SDL_Init( SDL_INIT_JOYSTICK | SDL_INIT_VIDEO ) == -1 )
        {
            printf( "Can't init SDL:  %s\n", SDL_GetError( ) );
            return EXIT_FAILURE;
        }
     
        atexit( SDL_Quit );
        screen = SDL_SetVideoMode( 1280, 800, 16, SDL_HWSURFACE| SDL_FULLSCREEN | SDL_DOUBLEBUF ); // initialisation de l'ecran 
     
        if( !screen)
        {
            printf( "Can't set video mode: %s\n", SDL_GetError( ) );
            return EXIT_FAILURE;
        }
     
        SDL_Rect position; // creation du point (rectangle)
        SDL_Surface *rectangle = NULL;
        rectangle = SDL_CreateRGBSurface(SDL_HWSURFACE, 12, 12, 16, 0, 1, 0, 0); // taille et couleur
     
        position.x = screen->w/2; //structure pour placer le point au centre
        position.y = screen->h/2;
        int dirx = 1;
        SDL_Event event;
        while(sysMgr.running) // boucle qui travaille tant qu'on appuye pas sur la croix pour quitter
        {
        sysMgr.inputManager();
            sysMgr.renderingManager();
        SDL_FillRect(rectangle, NULL, SDL_MapRGB(screen->format, 255, 255, 255));
        SDL_BlitSurface(rectangle, NULL, screen, &position); // Collage de la surface sur l'écran
        SDL_Flip(screen); // Mise Ã* jour de l'écran
       // SDL_Delay( 100 );
        SDL_FillRect(rectangle, NULL, SDL_MapRGB(screen->format, 0, 0, 0));
        SDL_BlitSurface(rectangle, NULL, screen, &position); // Collage de la surface sur l'écran
        position.x += dirx;
        if ((position.x >= screen->w) || (position.x <= 0))
    	   dirx = -dirx;
     
         SDL_Delay(100);  
     
     
                }
     
     
     
      return EXIT_SUCCESS;
     
    }

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    SDL_Delay c'est le niveau -1 de la gestion de vitesse.
    Pour bien faire il faut une vraie vitesse, que tu multiplies par le temps de la frame pour avoir une position.
    http://alexandre-laurent.developpez....-de-jeu/#LIV-C
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Ergonome
    Inscrit en
    Février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Février 2017
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    merci pour votre réponse

    j'ai appliqué ce que vous m'avez conseiller ça fonctionne mais j'ai un autre problème le point disparait au lieu de revenir dans l'autre sens


    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
     
    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
     
    // Permet de pouvoir sortir du programme en appuyant sur la croix
    class SystemManager {
        public:
            // Here we will just have a couple public members for example purposes.
            bool running;
            SDL_Event events;
            void inputManager(); // Handle input.
            void renderingManager(); // Handle drawing pretty pictures.
    };
     
    void SystemManager::inputManager() {
        while(SDL_PollEvent(&events)) {
            if(events.type == SDL_QUIT)
                running = false;
        }
    }
     
    void SystemManager::renderingManager() {
        // Draw pretty pictures...
    }
     
    int main( int argc, char *argv[ ] )
    {
        SDL_Surface *screen;
        SystemManager sysMgr;
        sysMgr.running = true;
        int lastrender = 0;
        int dirx = 1;
        if( SDL_Init( SDL_INIT_JOYSTICK | SDL_INIT_VIDEO ) == -1 )
        {
            printf( "Can't init SDL:  %s\n", SDL_GetError( ) );
            return EXIT_FAILURE;
        }
     
        atexit( SDL_Quit );
        screen = SDL_SetVideoMode( 1280, 800, 16, SDL_HWSURFACE| SDL_FULLSCREEN | SDL_DOUBLEBUF ); // initialisation de l'ecran 
     
        if( !screen)
        {
            printf( "Can't set video mode: %s\n", SDL_GetError( ) );
            return EXIT_FAILURE;
        }
     
        SDL_Rect position; // creation du point (rectangle)
        SDL_Surface *rectangle = NULL;
        rectangle = SDL_CreateRGBSurface(SDL_HWSURFACE, 20, 20, 16, 0, 1, 0, 0); // taille et couleur
     
        position.x = screen->w/2; //structure pour placer le point au centre
        position.y = screen->h/2;
        int dirX = 1;
        SDL_Event event;
        while(sysMgr.running) // boucle qui travaille tant qu'on appuye pas sur la croix pour quitter
        {
        sysMgr.inputManager();
            sysMgr.renderingManager();
        SDL_FillRect(rectangle, NULL, SDL_MapRGB(screen->format, 255, 255, 255));
        SDL_BlitSurface(rectangle, NULL, screen, &position); // Collage de la surface sur l'écran
        SDL_Flip(screen); // Mise Ã* jour de l'écran
        SDL_Delay( 100 );
        SDL_FillRect(rectangle, NULL, SDL_MapRGB(screen->format, 0, 0, 0));
        SDL_BlitSurface(rectangle, NULL, screen, &position); // Collage de la surface sur l'écran
        position.x += dirx;
        if ((position.x >= screen->w) || (position.x <= 0))
    	   dirx = -dirx;
       position.x = position.x + 1 *16;  
     
     
     
                }
     
     
     
      return EXIT_SUCCESS;
     
    }

  14. #14
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    100 po que ton problème c'est ton algorithme.
    Quand tu dépasses l'écran, tu changes la direction, et... c'est tout. Enfin non puisque tu le redéplaces arbitrairement également. Positivement de 16 px sur x.
    Boucle suivante tu changes la position, mais elle est encore en dehors de l'écran, donc tu rechanges la direction.
    Si tu utilisais le debugger ou un simple print de ta valeur de position, tu aurais résolu ça la semaine dernière.

    Sans compter que tu affiches la position de la frame précédente. Que tu mets à jour l'écran au milieu de la boucle avant de refaire des affichages, as un sleep qui... pourquoi ?
    Ca fait beaucoup d'approximations pour un si petit code... Un peu d'algorithmique et logique ne ferait pas de mal.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

Discussions similaires

  1. pb relier des points avec la SDL en C
    Par rafale001 dans le forum SDL
    Réponses: 1
    Dernier message: 25/02/2007, 15h42
  2. Petite mise au point avec gluUnProject.
    Par fatpat94 dans le forum OpenGL
    Réponses: 1
    Dernier message: 27/07/2005, 15h40
  3. probléme avec la sdl et c++
    Par wikers dans le forum OpenGL
    Réponses: 1
    Dernier message: 10/11/2004, 19h02
  4. Problème avec lib SDL
    Par Info-Rital dans le forum Linux
    Réponses: 8
    Dernier message: 02/07/2004, 20h59
  5. chargement de texture avec la SDL
    Par Fry dans le forum OpenGL
    Réponses: 7
    Dernier message: 27/05/2004, 15h31

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