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

GTK+ avec C & C++ Discussion :

Deplacement pièce jeu de Dame


Sujet :

GTK+ avec C & C++

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2012
    Messages : 21
    Par défaut Deplacement pièce jeu de Dame
    Bonjour à tous,

    J'ai un petit problème concernant le déplacement des pièces sur un jeu de Dame. En effet j'ai crée mon interface et placé mes différentes pièces, cependant j'aimerais connaitre l'architecture du déplacement de pion. J'aimerais que lorsque l'utilisateur "click" sur la premiere et sur la deuxieme case, le pion se déplace de la premiere à la deuxieme.

    Jai effectué de nombreuses recherches sans grand résultat...

    Merci a tous

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Bonjour.

    Il nous est impossible de répondre directement à ta question. Il n'y a pas qu'une seule façon de faire pour gérer le graphisme.

    Montre-nous ce que tu as déjà fait. À partir de là on pourra t'aiguiller un peu plus.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2012
    Messages : 21
    Par défaut
    tout d'abord merci de votre réponse

    Nous sommes dans un groupe et je m'occupe de la "partie" GTK. J'aimerais eviter le "drag and drop"...

    merci d'avance
    Fichiers attachés Fichiers attachés
    • Type de fichier : c main.c (5,4 Ko, 104 affichages)

  4. #4
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Actuellement je ne peux pas essayer ton code mais ce que je peux en voir c'est que tu crées un damier composé de GtkButton.
    Il faut que tu attaches à chaque bouton un identifiant unique. Ainsi, lorsque tu cliques sur l'un deux tu peux identifier le bouton appuyé dans la fonction callback jeu();.

    Dans la fonction jeu(); tu pourrais par exemple utiliser une variable "static". Si c'est un premier bouton enfoncé tu mémorise l'identifiant dnas la variable. Si c'est un deuxième bouton la variable est déjà initialisé. Tu disposes alors de identifiants des deux boutons sélectionnés. À partir de là tu effectues le traitement voulu.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2012
    Messages : 21
    Par défaut
    merci encore

    Mais le fait d'avoir créer une table avc des coordonnées ne me permet-il pas d'avoir un identifiant unique? ou bien faut -il que j'appelle mes boutons de 1 à 81 par exemple?

    merci

  6. #6
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Tous les boutons appellent la même fonction jeu();. Comment faire alors pour savoir quel bouton l'a appelé à un moment donné ?

    Une façon possible, en fonction de ton code actuel, serait dans jeu(); de comparer le pointeur recu par la fonction avec tous les pointeurs de game. Une fois trouvée tu peux alors savoir les coordonnées du bouton dans la table. C'est fonctionnel mais peu performant. À chaque appui sur un bouton on parcours la liste des boutons...

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2012
    Messages : 21
    Par défaut
    D'accord. Et pour le deplacement de la pièce de la case de départ à la case d'arrivée, je dois faire une sorte de mise à jour du damier en créant une fonction "maj" qui me permettra de visulaiser l'état du damier?

    merci

  8. #8
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Non, il y a plus simple.

    Dans la fonction jeu il te suffit de changer les images des deux boutons. Il te faudra juste vérifier si le déplacement n'est pas une prise. Dans ce cas là il te faudra aussi effacer le bouton du pion pris.

  9. #9
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Citation Envoyé par gerald3d Voir le message
    Tous les boutons appellent la même fonction jeu();. Comment faire alors pour savoir quel bouton l'a appelé à un moment donné ?

    Une façon possible, en fonction de ton code actuel, serait dans jeu(); de comparer le pointeur recu par la fonction avec tous les pointeurs de game. Une fois trouvée tu peux alors savoir les coordonnées du bouton dans la table. C'est fonctionnel mais peu performant. À chaque appui sur un bouton on parcours la liste des boutons...
    Il y a plus efficace: passer l'indice du bouton en paramètre user_data lors de la connexion du signal "clicked", avec GINT_TO_POINTER, et le récupérer dans la callback avec GPOINTER_TO_INT.

  10. #10
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Autre conseil, évite de coder la logique du jeu dans la partie graphique, essaie de bien les séparer. Crée tes structures (le damier), tes types d'un côté (types de pièces) et les fonctions pour les manipuler, vérifier la validité des coups, etc. Ton interface graphique ne doit faire qu'appeler des fonctions de ton jeu, c'est juste une surcouche. L'autre avantage de cette approche, c'est que cela permet facilement la création de plusieurs frontends (exemple: une interface en ligne de commande, une en Qt, une en GTK, toutes peuvent réutiliser le code de la logique du jeu sans avoir à la réimplémenter).

    Dès qu'on mélange le fond et la forme, cela devient plus dur à suivre.

  11. #11
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2012
    Messages : 21
    Par défaut
    Merci pour vos conseils.

    Je viens d'essayer de réaliser la fonction déplacement, mais l'image ne se déplace pas après les clicks... je vous joins ce que j'ai fait (ne prenez pas en compte les couleurs, c'était juste pour m'amuser^^).

    @liberforce je prends ton conseil en compte, et je my jette de suite dessus
    Fichiers attachés Fichiers attachés
    • Type de fichier : c main.c (6,1 Ko, 122 affichages)

  12. #12
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par liberforce Voir le message
    Il y a plus efficace: passer l'indice du bouton en paramètre user_data lors de la connexion du signal "clicked", avec GINT_TO_POINTER, et le récupérer dans la callback avec GPOINTER_TO_INT.
    Oui mais je n'ai pas voulu compliquer l'affaire. Cette méthode est bien entendu tout à fait valable.

  13. #13
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    J'ai apporté quelques modifications à ta fonction jouer(); pour avoir un début de fonctionnement :
    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
    void jouer (GtkWidget *widget,jeu * game) {
      int i;
      int j;
      /* game->click=1; */
     
     
      if (game->click==1)
        {
          for(j=0;j<9;j++)
    	{
    	  for(i=0;i<9;i++)
    	    {
    	      if (game->jeubouton[i][j]==widget)
    		{
    		  (game->cases).case1[0]=i;
    		  (game->cases).case1[1]=j;
    		  game->click=2;
    		}
    	    }
    	}
        }
      else
        {
          for(j=0;j<9;j++)
    	{
    	  for(i=0;i<9;i++)
    	    {
    	      if (game->jeubouton[i][j]==widget)
    		{
    		  (game->cases).case2[0]=i;
    		  (game->cases).case2[1]=j;
     
    		  /* (game->pion)=gtk_button_get_image(GTK_BUTTON(game->jeubouton[(game->cases).case1[0]][(game->cases).case1[1]])); */
     
    		  gtk_button_set_image (GTK_BUTTON (game->jeubouton[(game->cases).case2[0]][(game->cases).case2[1]]),
    					game->jeubouton[(game->cases).case1[0]][(game->cases).case1[1]]); 
    		  game->click=1;
    		}
    	    }
    	}
        }
    }

  14. #14
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Quelques remarques:
    • un damier, c'est du 10 lignes x 10 colonnes (pas 9)
    • un GtkToggleButton c'est mieux qu'un GtkButton dans ce contexte je pense. Cela permet de montrer à l'utilisateur quand une pièce est sélectionnée.
    • faire une fonction qui permet d'accéder au widget de la ligne row à la colonne
      col permet d'augmenter la lisibilité du code.
    • Utiliser des types énumérés et des define plutôt que des constantes.

  15. #15
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2012
    Messages : 21
    Par défaut
    @liberforce: oui je suis au courant, mais c'est un jeu "spécial" avc 81 cases . Pour le reste je préfère utiliser le callback avec le "click"

    jai un peu amélioré ce que m'as donné gerald3d :

    code : void jouer (GtkWidget *widget,jeu * game) {
    int i;
    int j;
    /* game->click=1; */


    if (game->click==1)
    {
    for(j=0;j<9;j++)
    {
    for(i=0;i<9;i++)
    {
    if (game->jeubouton[i][j]==widget)
    {
    (game->cases).case1[0]=i;
    (game->cases).case1[1]=j;
    game->pion=gtk_button_get_image(GTK_BUTTON(game->jeubouton[(game->cases).case1[0]][(game->cases).case1[1]]);
    game->click=2;
    }
    }
    }
    }
    else
    {
    for(j=0;j<9;j++)
    {
    for(i=0;i<9;i++)
    {
    if (game->jeubouton[i][j]==widget)
    {
    (game->cases).case2[0]=i;
    (game->cases).case2[1]=j;



    gtk_button_set_image (GTK_BUTTON (game->jeubouton[(game->cases).case2[0]][(game->cases).case2[1]]),game->pion); game->click=1;
    }
    }
    }
    }
    }





    Par contre, maintenant j'aimerais commencer à injecter ce que j'ai fait en C concernant le deplacement des pions. En effet, dansmon programme chaque pion à un caractère précis, exemple "n"=pionjoueur1... est ce que je peux associer facilement ce caractere à l'image du pion noir?

    Est-ce possible?
    Fichiers attachés Fichiers attachés

  16. #16
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Pour reprendre le principe cité par Liberforce plus haut tu disposes de deux applications :
    • une en mode console qui est le moteur de jeu,
    • l'autre qui est l'IHM du moteur de jeu

    Pour lier les deux il te faut lancer le moteur de jeu depuis l'IHM. Il existe des fonctions adaptées dans la Glib pour faire ca : Spawning processes.
    Elles te permettent de lancer une application et d'inter-agir avec elle ; tu récupères le stdout de l'application et tu peux écrire sur son stdin. En d'autres termes tu accèdes aux pipes d'entrées-sorties.

    À partir de là si ton moteur de jeu est capable d'afficher une position en mode console tu récupères cet affichage dans un gchar*. Une petite fonction d'analyse et tu peux reconstruire la position dans ton damier.

    Un jeu d'enfant en somme .

  17. #17
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Citation Envoyé par gerald3d Voir le message
    Pour reprendre le principe cité par Liberforce plus haut tu disposes de deux applications :
    • une en mode console qui est le moteur de jeu,
    • l'autre qui est l'IHM du moteur de jeu
    Ah, mais ce n'est pas du tout ce que j'ai dit !
    J'ai dit que c'était deux parties séparées de son code (typiquement, dans des fichiers séparés), un frontend et un backend, mais pas que c'était 2 processus séparés...

    ex: un objet "game" qui contient sont tableau correspondant au damier, et contenant les différentes pièces, et des fonctions permettant par exemple d'initialiser le damier (le remplir avec les pièces), déplacer une pièce, vérifier la validité d'un mouvement, récupérer la pièce à une position donnée, etc...

    Une fois que tu as cette logique implémentée de manière non-graphique, il devient trivial d'appeler ces fonctions à partir de la partie graphique de ton programme. Comme ça tu sais tout de suite identifier et corriger un problème qui affecte le fonctionnement du jeu (déplacement non valide par exemple) et le différencier d'un bug purement graphique.

  18. #18
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par liberforce Voir le message
    Ah, mais ce n'est pas du tout ce que j'ai dit !
    J'ai dit que c'était deux parties séparées de son code (typiquement, dans des fichiers séparés), un frontend et un backend, mais pas que c'était 2 processus séparés...

    ex: un objet "game" qui contient sont tableau correspondant au damier, et contenant les différentes pièces, et des fonctions permettant par exemple d'initialiser le damier (le remplir avec les pièces), déplacer une pièce, vérifier la validité d'un mouvement, récupérer la pièce à une position donnée, etc...

    Une fois que tu as cette logique implémentée de manière non-graphique, il devient trivial d'appeler ces fonctions à partir de la partie graphique de ton programme. Comme ça tu sais tout de suite identifier et corriger un problème qui affecte le fonctionnement du jeu (déplacement non valide par exemple) et le différencier d'un bug purement graphique.
    Je suis vraiment à côté de la plaque en ce moment

  19. #19
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2012
    Messages : 21
    Par défaut
    Citation Envoyé par liberforce Voir le message

    Une fois que tu as cette logique implémentée de manière non-graphique, il devient trivial d'appeler ces fonctions à partir de la partie graphique de ton programme. Comme ça tu sais tout de suite identifier et corriger un problème qui affecte le fonctionnement du jeu (déplacement non valide par exemple) et le différencier d'un bug purement graphique.
    J'ai justement ca qui me pose probleme. Notamment au niveau des images. J'ai joins mon code en C dans mon dernière message, mais ce qui me pose problème, c'est comment definir les images de mes pions à partir de mes caracteres "n", "b", "B" et "N"...

  20. #20
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Tout d'abord je n'afficherai pas le damier comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    n	n	n	n	N	n	n	n	n	
    n	n	n	n	n	n	n	n	n	
     
     
     
     
     
    b	b	b	b	b	b	b	b	b	
    b	b	b	b	B	b	b	b	b
    mais plutôt comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    n	n	n	n	N	n	n	n	n	
    n	n	n	n	n	n	n	n	n	
    0	0	0	0	0	0	0	0	0	
    0	0	0	0	0	0	0	0	0	
    0	0	0	0	0	0	0	0	0	
    0	0	0	0	0	0	0	0	0	
    0	0	0	0	0	0	0	0	0	
    b	b	b	b	b	b	b	b	b	
    b	b	b	b	B	b	b	b	b
    Ainsi il est possible de définir un chiffre ou une lettre pour chaque état des cases (c'est un exemple) :
    • n pion noir
    • b pion blanc
    • N dame noire
    • B dame blanche
    • 0 case vide


    En partant de ce principe tu peux créer une fonction qui va lire ton tableau et appliquer le dessin correspondant. Un simple switch() devrait suffire à l'opération :
    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
     
     for(i=0 ;i<=8 ;i++)
        {
          for(j=0 ;j<=8 ;j++)
            {
               switch (jeu->plateau[i][j])
                 {
                    case '0' : afficher une case vide; break;
                    case 'b' : afficher un pion blanc; break;
                    case 'B' : afficher une dame blanche; break;
                    case 'n' : afficher un pion noir; break;
                    case 'N' : afficher une dame noire; break;
                    default : afficher un message d'erreur : code inconnu;
                 }
            }
        }

Discussions similaires

  1. jeu de dame en c
    Par MALAKFATINE dans le forum Projets
    Réponses: 1
    Dernier message: 18/09/2006, 09h34
  2. créer jeu de dame en C
    Par SAMUELSalbert dans le forum C
    Réponses: 11
    Dernier message: 31/07/2006, 20h33
  3. Code source en c d'un jeu de dames
    Par ledawa dans le forum Développement 2D, 3D et Jeux
    Réponses: 33
    Dernier message: 22/05/2006, 08h54
  4. [Jeu de dames]Enregistrer les règles...
    Par progfou dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 16/11/2005, 19h39
  5. probleme pour un jeu de dames en python
    Par doudou152 dans le forum Général Python
    Réponses: 7
    Dernier message: 22/04/2005, 14h53

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