Récupérer une saisie clavier de l'utlisateur

Le tutoriel en ligne vous pose quelques problèmes ? C'est ici pour en parler !

Récupérer une saisie clavier de l'utlisateur

Messagede YuGiOhJCJ le 29 Avr 2005 01:15

Salut,
voilà j'expose un nouveau problème:
Je veux proposer à l'utilisateur de mon jeu vidéo d'entrer son nom.

Ce qui serait sympa, c'est que l'utilisateur puisse entrer des caractères dans une zone prévue à cet effet dans une fenêtre SDL.

Moi en langage C pure c'était simple:
Code: Tout sélectionner
printf("\nDonnez un nom à votre personnage: ");
      scanf("%20s", nom);

nom était une variable "chaine de caractères" que j'initialisais ansi:
char nom[20+1];
Remarque: j'aime bien mettre le +1 pour montrer qu'il faut penser au caractère nul : "\0" dû à la saisie par la touche "Entrée".

Mais là avec la lib SDL, ça va être plus corcé :cry:
Je pense qu'il va falloir se servir des évennements...A chaque fois que l'utilisateur appui sur une touche, ça enregistre les caractères dans une variable.
Mais quel type de variable utiliser?Y a t'il déjà des fonctions prévues pour ce genre de choses?
[yugiohjcj.free.fr]
Yu-Gi-Oh! Jeu de Cartes à Jouer
Avatar de l’utilisateur
YuGiOhJCJ
Bébé Chocobo
Bébé Chocobo
 
Messages: 121
Inscription: 22 Fév 2005 21:58
Localisation: Devant mon ordinateur en train de développer

Messagede moi1392 le 29 Avr 2005 11:48

Il faut que tu refasses le boulot de scnaf.. ne t'inquiètes pas, c'est moins, compliqué qu'il n'y parait...

pour la variable, c'est la même chose : char texte[20+1];

ensuite, il te faut une autre variable (un booleen) qui te dit que tu est en train de saisir un texte et pas d'appuyer sur les touche pour déplacer ton bonhome etc...

int saisie = 0;

une troisième variable est aussi nécessaire pour savoir ou tu en est dans ton tableau de char :

int indice = 0;

pour plus de clarté, je te propose de mettre tout ça dans une structure, et de déclaré une variable globale "ma_saisie" de ce nouveau type :
Code: Tout sélectionner
typedef struct
{
    char texte[23+1]; // on autorise un nom de 23 caractère
    int saisie;
    int indice;
} Saisie;

Saisie ma_saisie;


quand tu commence à saisir, il te faudra initialiser la variable "ma_saisie", voila comment tu vas faire :

Code: Tout sélectionner
void initSaisie()
{
    ma_saisie.saisie = 1;  // pour dire que l'on est en train de saisir
    ma_saisie.indice = 0; // on en est au premier caractère.
}


voila maintenant comment gerer ta boucle d'evenement :

Code: Tout sélectionner
while(...)
{
    ....  // tous des évenements habituels.

   // les cas d'appuys sur une touche de clavier :
   case SDL_KEYDOWN:
   
   switch ( event.key.keysym.sym ) // on teste quelle touche a été enfoncée
   {
   case SDLK_a:
   case SDLK_b:
   ...  // tu les mets tous jusqu'à SDLK_z
   // tu met ensuite les touches spéciales que tu souhaites gerer
   case SDLK_SPACE:
   ...
       if (ma_saisie.saisie)  // si on est en train de saisir du texte
           saisieTexte( (char)event.key.keysym.sym );
    break;  // le break de tous les case SDLK_*

   case SDLK_RETURN:  // pour la fin de la saisie
      if (ma_saisie.saisie)
          finSaisie();
   }
   break; // le break du case SDL_KEYDOWN
}


enfin, les fonctions saisieTexte et finSaisie, qui ne sont plus très difficiles après cela

Code: Tout sélectionner
void saisieTexte(char lettre)
{
    if (ma_saisie.indice < 23) // s'il reste encore de la place dans le tableau
    {
        ma_saisie.texte[ma_saisie.indice] = lettre;
        ma_saisie.indice++;
    }
    else // plus de place
        printf("blabla, c'est pas bien :(\n");
}

void finSaisie()
{
    ma_saisie.texte[ma_saisie.indice] = 0; // le 0 terminal
    ma_saisie.saisie = 0; // on ne saisie plus
}


Voila, c'était bien moins compliqué que ça en avait l'air non :)
bon, c'est une version un peu simplifiée aussi.. tu pourrais aussi gerer les retours en arrière et les effacement, les insertions, ...

Mais pour tout ça, je te laisse t'amuser ;)

Un autre dtail aussi.. moi je l'ai écrit comme ça pour limiter la taille, mais évite toujours de mettre des "nombres magiques" dans ton code, du genre : if (ma_saisie.indice < 23), d'abord, parce que 23 ça ne veut rien dire, et ensuite parce que si tu changes un jour la taille de ton texte, tu devras retrouver tous les 23 et les changer aussi :? (sans parler des 23 qui servent à autre chose...)

alors tu mets en début de fichier #define TAILLE_SAISIE 23 et tu remplaces tous les 23 par ça. Ensuite, si tu veux changer la taille, tu n'as qu'à la changer à un seul endroit :)

Fait ça pour TOUS les nombres que tu as dans le code !!
Avatar de l’utilisateur
moi1392
Chocobo des mers profondes
Chocobo des mers profondes
 
Messages: 3986
Inscription: 27 Juin 2004 12:03
Localisation: chez wam

Messagede YuGiOhJCJ le 29 Avr 2005 15:29

OK.
J'ai tout compris.
C'est long à programmer mais c simple à comprendre.
[yugiohjcj.free.fr]
Yu-Gi-Oh! Jeu de Cartes à Jouer
Avatar de l’utilisateur
YuGiOhJCJ
Bébé Chocobo
Bébé Chocobo
 
Messages: 121
Inscription: 22 Fév 2005 21:58
Localisation: Devant mon ordinateur en train de développer

Messagede Mateooo le 29 Avr 2005 17:20

"c'est long à programmer mais c'est simple à comprendre"... Il se fout de nous???
Mateooo
 

Messagede 6trouille le 29 Avr 2005 17:27

Mais non Mateooo, c'est tout con : tu clic à gauche, tu clique à droite, encore 2 fois à gauche et l'affaire est pliée :goutter: :banghead: :banghead:
La vitesse de la lumière étant supérieure à la vitesse du son, il est normal que certains paraissent brillants avant d'ouvrir la bouche ;)
Avatar de l’utilisateur
6trouille
Gourou Star Ocean
Gourou Star Ocean
 
Messages: 23713
Inscription: 07 Mar 2005 21:47
Localisation: Somewhere
Le jeu qui vous a fait connaître le site: Star Ocean 'till the End of Time

Messagede danban le 29 Avr 2005 17:29

...sans commentaires, ni concervateurs
ok, ok, je sors
danban
 

Messagede YuGiOhJCJ le 30 Avr 2005 02:04

En relisant bien le code, j'ai un petit prob de compréhension la-dessus:

Code: Tout sélectionner
if (ma_saisie.saisie)  // si on est en train de saisir du texte
           saisieTexte( (char)event.key.keysym.sym );
...

void saisieTexte(char lettre)
{
    if (ma_saisie.indice < 23) // s'il reste encore de la place dans le tableau
    {
        ma_saisie.texte[ma_saisie.indice] = lettre;
        ma_saisie.indice++;
    }
    else // plus de place
        printf("blabla, c'est pas bien :(\n");
}


Alors si je comprends bien:
Si on est en train de saisir du texte, on fait appel à la fonction saisieTexte plus bas.
Cette fonction saisieTexte vérifie s'il reste encore de la place dans le tableau, et si c'est bon, elle range la lettre dans le tableau texte à la position donnée par indice puis elle incrémente indice pour savoir combien de caractère sont tapés.

Par contre, j'ai du mal à comprendre en haut pourquoi t'appelle la fonction de cette façon:
saisieTexte( (char)event.key.keysym.sym );
Moi j'aurai rien mis entre parenthèses:
saisieTexte();

Je crois que ça à avoir avec la valeur de lettre.
En fait en disant:
(char)event.key.keysym.sym
je crois que tu associe la valeur de event.key.keysym.sym à lettre. Tu peux m'expliquer cette partie? Je ne connaissais pas du tout cette méthode de programmation...
[yugiohjcj.free.fr]
Yu-Gi-Oh! Jeu de Cartes à Jouer
Avatar de l’utilisateur
YuGiOhJCJ
Bébé Chocobo
Bébé Chocobo
 
Messages: 121
Inscription: 22 Fév 2005 21:58
Localisation: Devant mon ordinateur en train de développer

ça marche

Messagede YuGiOhJCJ le 30 Avr 2005 03:20

Cool ça fonctionne! J'arrive à afficher le texte saisie au clavier avec l'appui de "entrée", et j'ai même ajouté la possibilitée de l'effacer avec "echap".
problème n°1: Dommage que ça écrivent 2 fois le caractère.
Par exemple, quand j'écris toto puis "entrée" ça me donne:
ttoottoo

Remarque: Aussi, il faut que j'utilise FreeSurface parce que que la surface où j'affiche mon texte ne s'efface pas toute seule. Donc à chaque fois que j'efface avec "Echap" puis que je retappe un nouveau texte puis "Entrée", ça me donne 2 textes l'un sur l'autre lol. Je vais mettre un FreeSurface dans la fonction effSaisie.

Remarque: Au fait, quand le tableau nom est vide, je ne peux pas afficher nom à l'écran. SDL detetcte une erreur a cet endroit. Un texte vide n'est donc pas un texte.
Poblème n°2: Mais quand j'arrive à cette erreur, j'essaye a nouveau d'érire des lettres puis "entrée" mais SDL affiche encore l'erreur...Pourtant j'ai re-rempli le tableau nom...

Voici les variabls utilisées:
Code: Tout sélectionner
char nom[20+1] = "\0";
int saisie_clavier = 1;
int indice = 0;


le code principal:

Code: Tout sélectionner
      while(SDL_WaitEvent(&event)){
         switch (event.type){
                 case SDL_QUIT:   //Lorsque l'on ferme la fenêtre
                     exit(0);
            break;
         }
         switch (event.key.keysym.sym){
            case SDLK_a:
            if(saisie_clavier==1){
               saisieTexte((char)event.key.keysym.sym);
            }
            break;
            case SDLK_b:
            if(saisie_clavier==1){
               saisieTexte((char)event.key.keysym.sym);
            }
            break;
            case SDLK_c:
            if(saisie_clavier==1){
               saisieTexte((char)event.key.keysym.sym);
            }
            break;
            case SDLK_d:
            if(saisie_clavier==1){
               saisieTexte((char)event.key.keysym.sym);
            }
            break;
            case SDLK_e:
            if(saisie_clavier==1){
               saisieTexte((char)event.key.keysym.sym);
            }
            break;
            case SDLK_f:
            if(saisie_clavier==1){
               saisieTexte((char)event.key.keysym.sym);
            }
            break;
            case SDLK_g:
            if(saisie_clavier==1){
               saisieTexte((char)event.key.keysym.sym);
            }
            break;
            case SDLK_h:
            if(saisie_clavier==1){
               saisieTexte((char)event.key.keysym.sym);
            }
            break;
            case SDLK_i:
            if(saisie_clavier==1){
               saisieTexte((char)event.key.keysym.sym);
            }
            break;
            case SDLK_j:
            if(saisie_clavier==1){
               saisieTexte((char)event.key.keysym.sym);
            }
            break;
            case SDLK_k:
            if(saisie_clavier==1){
               saisieTexte((char)event.key.keysym.sym);
            }
            break;
            case SDLK_l:
            if(saisie_clavier==1){
               saisieTexte((char)event.key.keysym.sym);
            }
            break;
            case SDLK_m:
            if(saisie_clavier==1){
               saisieTexte((char)event.key.keysym.sym);
            }
            break;
            case SDLK_n:
            if(saisie_clavier==1){
               saisieTexte((char)event.key.keysym.sym);
            }
            break;
            case SDLK_o:
            if(saisie_clavier==1){
               saisieTexte((char)event.key.keysym.sym);
            }
            break;
            case SDLK_p:
            if(saisie_clavier==1){
               saisieTexte((char)event.key.keysym.sym);
            }
            break;
            case SDLK_q:
            if(saisie_clavier==1){
               saisieTexte((char)event.key.keysym.sym);
            }
            break;
            case SDLK_r:
            if(saisie_clavier==1){
               saisieTexte((char)event.key.keysym.sym);
            }
            break;
            case SDLK_s:
            if(saisie_clavier==1){
               saisieTexte((char)event.key.keysym.sym);
            }
            break;
            case SDLK_t:
            if(saisie_clavier==1){
               saisieTexte((char)event.key.keysym.sym);
            }
            break;
            case SDLK_u:
            if(saisie_clavier==1){
               saisieTexte((char)event.key.keysym.sym);
            }
            break;
            case SDLK_v:
            if(saisie_clavier==1){
               saisieTexte((char)event.key.keysym.sym);
            }
            break;
            case SDLK_w:
            if(saisie_clavier==1){
               saisieTexte((char)event.key.keysym.sym);
            }
            break;
            case SDLK_x:
            if(saisie_clavier==1){
               saisieTexte((char)event.key.keysym.sym);
            }
            break;
            case SDLK_y:
            if(saisie_clavier==1){
               saisieTexte((char)event.key.keysym.sym);
            }
            break;
            case SDLK_z:
            if(saisie_clavier==1){
               saisieTexte((char)event.key.keysym.sym);
            }
            break;
            case SDLK_RETURN:
            if(saisie_clavier==1){
               finSaisie();
            }
            /*Chargement du texte_3 sur la surface fenêtre*/
            if((sfc_texte_3=TTF_RenderText_Solid(font, nom, fg))==NULL){
               fprintf(stderr, "Impossible d'afficher le texte.\n");
            }//Fin de if((sfc_texte=TTF_RenderText_Solid(font, "Blabla", fg))==NULL)
            /*Affichage du texte_3 sur la surface fenêtre*/
            SDL_BlitSurface(sfc_texte_3, NULL, sfc_fenetre, &position_texte);
            /*Mettre à jour l'affichage*/
            SDL_UpdateRect(sfc_fenetre, 0, 0, 0, 0);
            break;
            case SDLK_ESCAPE:
            effSaisie();
            break;
         }//Fin de switch()
      }//Fin de while()


Voici les fonctions utilisées:

Code: Tout sélectionner
/***SAISIETEXTE***/
void saisieTexte(char lettre){
   if(indice<20){
      nom[indice] = lettre;
      indice++;
   }
   else{
      printf("\a");   
   }
}

/***FINSAISIE***/
void finSaisie(){
   nom[indice] = 0;
   saisie_clavier = 0;
}

/***EFFSAISIE***/
void effSaisie(){
   nom[0] = nom[1] = nom[2] = nom[3] = nom[4] = nom[5] = nom[6] = nom[7] = nom[8] = nom[9] = nom[10] = nom[11] = nom[12] = nom[13] = nom[14] = nom[15] = nom[16] = nom[17] = nom[18] = nom[19] = nom[20] = nom[21] = 0;
   indice = 0;
   saisie_clavier = 1;
}


Tu peux te pancher sur le prob des doubles lettres? (problème n°1)
Et me dire pourquoi une fois que SDL obtient une erreur lors de l'affichage du texte d'un tableau vide, puis que je re-rempli ce tableau, que j'essai de l'afficher, SDL me renvoie encore l'erreur? (problème n°2)

Merci pour ton aide. Grâce à toi je sais faire pleins de choses en SDL maintenant :D
[yugiohjcj.free.fr]
Yu-Gi-Oh! Jeu de Cartes à Jouer
Avatar de l’utilisateur
YuGiOhJCJ
Bébé Chocobo
Bébé Chocobo
 
Messages: 121
Inscription: 22 Fév 2005 21:58
Localisation: Devant mon ordinateur en train de développer

Messagede moi1392 le 30 Avr 2005 12:12

le problème des doubles lettres est rès simple :) reli bien le code que j'ai écrit plus haut, tu verras que switch (event.key.keysym.sym) se trouve DANS le case SDL_KEYDOWN. Toi, comme tu le mets à l'exterieur, tu capte l'évenement KEY_DOWN et KEY_UP, donc 2 fois par touches :)
Pour le vérifier facilement, appuis sur une touche, ne la relaches pas et appuis sur une autre.. tu verras, les lettres se croiseront alors.

Pour le problème de l'effacement, il me faudrait la partie ou tu affiches le texte à l'écran pour plus de clareté... mais dans l'éffacement, il te siffit de faire nom[0]=0; au lieu de tous les faire (et de mettre l'indice à zero aussi bien sur :oui:) !! si tu te sers bien de ton tableau ailleurs, ça devrait fonctionner.

Une petite remarque sur les switch / case. si tu ne mets pas de break, tu peux enchainer plusieurs case !! regarde ce que j'ai écrit plus haut..

Code: Tout sélectionner
case ***:
case ***:
case ***:
    faireQuelquechose();
    break;


pour l'appel de la fonction, si tu ne connais pas les fonctions avec paramètres, ça risque de devenir asser difficile pour toi ! penches toi la dessus, ça n'est pas très compliquer:

quand tu déclares une fonction, tu peux la déclarer sans paramètres ou avec un ou plusieurs paramètres et avec ou sans valeur de retour :

Code: Tout sélectionner
void f()
{
}

int f1()
{
   return 3;
}

void f2(int a)
{
   printf("parametre = %d\n", a);
}

int f3(int a, int b)
{
    return a + b;
}

int main()
{
   f();
   printf("f1() = %d\n", f1());
   f2(5);
   f2( f3( 3, f1() ) );
}

tu dois voir à l'écran :
Code: Tout sélectionner
f1() = 3
parametre = 5
parametre = 6


si tu as des problèmes avec ce que j'ai écris la dessus, essaie de te trouver un tutorial sur C, et lis les chapitres sur les definition/déclaration et appels de fonctions.
Avatar de l’utilisateur
moi1392
Chocobo des mers profondes
Chocobo des mers profondes
 
Messages: 3986
Inscription: 27 Juin 2004 12:03
Localisation: chez wam

Messagede YuGiOhJCJ le 30 Avr 2005 22:15

ok!
ouais c ça le problème.
Les fonctions g pas encore tout compris.
Mais ça viendra avec le temps.
Je vé lire des tutaux...

Pour tes remarques:

"Pour le problème de l'effacement, il me faudrait la partie ou tu affiches le texte à l'écran pour plus de clareté"
elle y est regarde je te la copie a nouveau:
Code: Tout sélectionner
/*Chargement du texte_3 sur la surface fenêtre*/
            if((sfc_texte_3=TTF_RenderText_Solid(font, nom, fg))==NULL){
               fprintf(stderr, "Impossible d'afficher le texte.\n");
            }//Fin de if((sfc_texte=TTF_RenderText_Solid(font, "Blabla", fg))==NULL)
            /*Affichage du texte_3 sur la surface fenêtre*/
            SDL_BlitSurface(sfc_texte_3, NULL, sfc_fenetre, &position_texte);
            /*Mettre à jour l'affichage*/
            SDL_UpdateRect(sfc_fenetre, 0, 0, 0, 0);
            break;
            case SDLK_ESCAPE:
            effSaisie();
            break;


"il te siffit de faire nom[0]=0; au lieu de tous les faire"
Ah bon? Pourtant si on fait ça, les autres caractères du tableau de nom auront une valeur...Si la 1ère valeur du tableau=0, on ne regarde pas les suivantes c'est ça?
[yugiohjcj.free.fr]
Yu-Gi-Oh! Jeu de Cartes à Jouer
Avatar de l’utilisateur
YuGiOhJCJ
Bébé Chocobo
Bébé Chocobo
 
Messages: 121
Inscription: 22 Fév 2005 21:58
Localisation: Devant mon ordinateur en train de développer

Messagede Mateooo le 01 Mai 2005 09:20

Y a de quoi devenir complètement :tard: rien qu'à lire vos posts! (je sais j'insiste, mais ça me déprime réellement...)
Mateooo
 

Messagede moi1392 le 01 Mai 2005 21:13

et bien tu n'as qu'à vérifier que tu as quelque chose à écrire avec de le faire :

Code: Tout sélectionner

if ( strnlen(nom, TAILLE_MAX_NOM) > 0  )
{

/************ TON CODE  **************/
/*Chargement du texte_3 sur la surface fenêtre*/
            if((sfc_texte_3=TTF_RenderText_Solid(font, nom, fg))==NULL){
               fprintf(stderr, "Impossible d'afficher le texte.\n");
            }//Fin de if((sfc_texte=TTF_RenderText_Solid(font, "Blabla", fg))==NULL)
            /*Affichage du texte_3 sur la surface fenêtre*/
            SDL_BlitSurface(sfc_texte_3, NULL, sfc_fenetre, &position_texte);
            /*Mettre à jour l'affichage*/
            SDL_UpdateRect(sfc_fenetre, 0, 0, 0, 0);
            break;
            case SDLK_ESCAPE:
            effSaisie();
            break;
/*********FIN DE TON CODE ***********/
}


Comme ça tu ne le fais que si tu as quelque chose à écrire.
Et n'oublie pas, strnlen est déclaré dans string.h, il te faut donc inclure string.h dans fichier.

@mateo.. t'es en manque de posts en ce moment.... :-k
Avatar de l’utilisateur
moi1392
Chocobo des mers profondes
Chocobo des mers profondes
 
Messages: 3986
Inscription: 27 Juin 2004 12:03
Localisation: chez wam

Messagede Mateooo le 02 Mai 2005 12:32

moi en manque de posts? jamais... :P
Mais d'abord, c'est toi qui triche, avec tes codes super grands, ça augmente ta moyenne et ton nombre totals de caractères :nah:
Mateooo
 

Messagede moi1392 le 02 Mai 2005 12:35

t'as qu'à faire de la programmation.. c'est pas ma faute si je suis un génie quand même lol

alors que toi, petit scarabé, il te faudra encore au moins 1000 ans avant d'arriver à mon niveau :oui:
Dernière édition par moi1392 le 02 Mai 2005 12:45, édité 1 fois.
Avatar de l’utilisateur
moi1392
Chocobo des mers profondes
Chocobo des mers profondes
 
Messages: 3986
Inscription: 27 Juin 2004 12:03
Localisation: chez wam

Messagede Mateooo le 02 Mai 2005 12:41

:nah: ... Rien à rajouter (ah là là, qu'est-ce qu'on ferait sans ce smiley?) (zut, j'ai rajouté quelque chose) (bon maintenant que cesqt fait...) (je sors :D )
Mateooo
 

Messagede moi1392 le 02 Mai 2005 13:18

et mateo, si tu t'ennuis, vas flooder dans "fruit-basket" (:rire:), ce post est réservé aux programmationnateurs !! lol
Avatar de l’utilisateur
moi1392
Chocobo des mers profondes
Chocobo des mers profondes
 
Messages: 3986
Inscription: 27 Juin 2004 12:03
Localisation: chez wam

Messagede danban le 02 Mai 2005 13:55

lol ...quoi que non :non:
danban
 

OK

Messagede YuGiOhJCJ le 06 Mai 2005 00:19

Dac ça marche ;-)
[yugiohjcj.free.fr]
Yu-Gi-Oh! Jeu de Cartes à Jouer
Avatar de l’utilisateur
YuGiOhJCJ
Bébé Chocobo
Bébé Chocobo
 
Messages: 121
Inscription: 22 Fév 2005 21:58
Localisation: Devant mon ordinateur en train de développer

Messagede moi1392 le 06 Mai 2005 02:00

quand t'es motivé YuGiOhJCJ file moi ce que tu as fait, que je jette un coup d'oeil pour voir ce que ça donne :oui:
Avatar de l’utilisateur
moi1392
Chocobo des mers profondes
Chocobo des mers profondes
 
Messages: 3986
Inscription: 27 Juin 2004 12:03
Localisation: chez wam

Effacer une surface

Messagede YuGiOhJCJ le 31 Mai 2005 21:18

Eh bien je recommence un nouveau projet rapide. Je te le montrerai si j'arrive à faire ceci:

Je veux déplacer un BMP en utilisant les fleches du clavier UP, DOWN, LEFT et RIGHT.
J'y suis arrivé mais ya un prob:
le BMP précédent reste affiché! Donc au bout d'un certain temps, il y a pleins de BMP partout sur l'écran lol
Il faudrait qu'à chaque changement de position du BMP, l'ancien soit effacé.

Moi je croyais que c'était le rôle de FreeSurface regarde plus haut ce que j'ai écris:
"Remarque: Aussi, il faut que j'utilise FreeSurface parce que que la surface où j'affiche mon texte ne s'efface pas toute seule. "
Or c'est complètement faux! Ca sert juste à libérer la surface pour fermer correctement SDL pas vrai?

Donc quelle est la commande pour effacer le contenu d'une surface?
[yugiohjcj.free.fr]
Yu-Gi-Oh! Jeu de Cartes à Jouer
Avatar de l’utilisateur
YuGiOhJCJ
Bébé Chocobo
Bébé Chocobo
 
Messages: 121
Inscription: 22 Fév 2005 21:58
Localisation: Devant mon ordinateur en train de développer

Suivante

Retourner vers Besoin d'aide en SDL ?

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités

cron