Partage
  • Partager sur Facebook
  • Partager sur Twitter

entrer des caractere dans un tableau sous SDL

pour enregistrer le nom du joueur par exemple

Sujet résolu
    7 juillet 2006 à 16:57:21

    Bonjour!
    Je voudrais savoir si il n'y a pas une fonction(ou si vous en avez) sous SDL qui permet d'enregistrer dans un tableau les caracteres qu'on a tapé pour former un mot.

    Merci.

    • Partager sur Facebook
    • Partager sur Twitter
      7 juillet 2006 à 17:17:40

      EDIT : non rien ( j'ai pas vu que c'était sous SDL )
      • Partager sur Facebook
      • Partager sur Twitter
        7 juillet 2006 à 18:17:27

        Sinon j'ai essayé d'en faire une mais elle marche pas apparament car elle me renvoyé des trucs du genre " àœ± "

        void lettre_tapee(char *chaine[10],long *i)
        {
            SDL_Event event;

                SDL_PollEvent(&event);
                switch(event.type)
                {
                    case SDL_KEYDOWN:
                    switch (event.key.keysym.sym)
                    {
                        case SDLK_a:
                        if(*i<10)
                        *chaine[*i]='a';
                        *i++;  //j'augmente i pour changer le second caractere la prochaine fois que ca rentre dans la fonction
                        break;
                        case SDLK_b:
                        if(*i<10)
                        *chaine[*i]='b';
                        *i++;
                        break;
                        case SDLK_c:
                        if(*i<10)
                        *chaine[*i]='c';
                        *i++;
                        break;
                        case SDLK_d:
                        if(*i<10)
                        *chaine[*i]='d';
                        *i++;
                        break;
                        case SDLK_e:
                        if(*i<10)
                        *chaine[*i]='e';
                        *i++;
                        break;
                        case SDLK_f:
                        if(*i<10)
                        *chaine[*i]='f';
                        *i++;
                        break;
                        case SDLK_g:
                        if(*i<10)
                        *chaine[*i]='g';
                        *i++;
                        break;
                        case SDLK_h:
                        if(*i<10)
                        *chaine[*i]='h';
                        *i++;
                        break;
                        case SDLK_i:
                        if(*i<10)
                        *chaine[*i]='i';
                        *i++;
                        break;
                        case SDLK_j:
                        if(*i<10)
                        *chaine[*i]='j';
                        *i++;
                        break;
                        case SDLK_k:
                        if(*i<10)
                        *chaine[*i]='k';
                        *i++;
                        break;
                        case SDLK_l:
                        if(*i<10)
                        *chaine[*i]='l';
                        *i++;
                        break;
                        case SDLK_m:
                        if(*i<10)
                        *chaine[*i]='m';
                        *i++;
                        break;
                        case SDLK_n:
                        if(*i<10)
                        *chaine[*i]='n';
                        *i++;
                        break;
                        case SDLK_o:
                        if(*i<10)
                        *chaine[*i]='o';
                        *i++;
                        break;
                        case SDLK_p:
                        if(*i<10)
                        *chaine[*i]='p';
                        *i++;
                        break;
                        case SDLK_q:
                        if(*i<10)
                        *chaine[*i]='q';
                        *i++;
                        break;
                        case SDLK_r:
                        if(*i<10)
                        *chaine[*i]='r';
                        *i++;
                        break;
                        case SDLK_s:
                        if(*i<10)
                        *chaine[*i]='s';
                        *i++;
                        break;
                        case SDLK_t:
                        if(*i<10)
                        *chaine[*i]='t';
                        *i++;
                        break;
                        case SDLK_u:
                        if(*i<10)
                        *chaine[*i]='u';
                        *i++;
                        break;
                        case SDLK_v:
                        if(*i<10)
                        *chaine[*i]='v';
                        *i++;
                        break;
                        case SDLK_w:
                        if(*i<10)
                        *chaine[*i]='w';
                        *i++;
                        break;
                        case SDLK_x:
                        if(*i<10)
                        *chaine[*i]='x';
                        *i++;
                        break;
                        case SDLK_y:
                        if(*i<10)
                        *chaine[*i]='y';
                        *i++;
                        break;
                        case SDLK_z:
                        if(*i<10)
                        *chaine[*i]='z';
                        *i++;
                        break;
                    }
                    break;
                }
        }


        si quelqu'un a une sugestion!!
        • Partager sur Facebook
        • Partager sur Twitter
          7 juillet 2006 à 22:07:37

          Et comme ça ?:(pas testé)

          char lettre_tapee(char *chaine, long taille)
          {
              char continuer = 1;
              long i = 0;

              SDL_Event event;

                  SDL_PollEvent(&event);
                  switch(event.type)
                  {


                      case SDL_KEYDOWN:
                      switch (event.key.keysym.sym)
                      {
                          case SDLK_a:

                          chaine[i]='a';
                          i++;  //j'augmente i pour changer le second caractere la prochaine fois que ca rentre dans la fonction
                          break;
                          case SDLK_b:

                          chaine[i]='b';
                          i++;
                          break;
                          case SDLK_c:

                          chaine[i]='c';
                          i++;
                          break;
                          case SDLK_d:

                          chaine[i]='d';
                          i++;
                          break;
                          case SDLK_e:

                          chaine[i]='e';
                          i++;
                          break;
                          case SDLK_f:

                          chaine[i]='f';
                          i++;
                          break;
                          case SDLK_g:

                          chaine[i]='g';
                          i++;
                          break;
                          case SDLK_h:

                          chaine[i]='h';
                          i++;
                          break;
                          case SDLK_i:
                          if(i<10)
                          chaine[i]='i';
                          i++;
                          break;
                          case SDLK_j:

                          chaine[i]='j';
                          i++;
                          break;
                          case SDLK_k:

                          chaine[i]='k';
                          i++;
                          break;
                          case SDLK_l:

                          chaine[i]='l';
                          i++;
                          break;
                          case SDLK_m:

                          chaine[i]='m';
                          i++;
                          break;
                          case SDLK_n:
                          chaine[i]='n';
                          i++;
                          break;
                          case SDLK_o:

                          chaine[i]='o';
                          i++;
                          break;
                          case SDLK_p:

                          chaine[i]='p';
                          i++;
                          break;
                          case SDLK_q:

                          chaine[i]='q';
                          i++;
                          break;
                          case SDLK_r:

                          chaine[i]='r';
                          i++;
                          break;
                          case SDLK_s:
                          if(i<10)
                          chaine[i]='s';
                          i++;
                          break;
                          case SDLK_t:

                          chaine[i]='t';
                          i++;
                          break;
                          case SDLK_u:

                          chaine[i]='u';
                          i++;
                          break;
                          case SDLK_v:

                          chaine[i]='v';
                          i++;
                          break;
                          case SDLK_w:

                          chaine[i]='w';
                          i++;
                          break;
                          case SDLK_x:

                          chaine[i]='x';
                          i++;
                          break;
                          case SDLK_y:

                          chaine[i]='y';
                          i++;
                          break;
                          case SDLK_z:

                          chaine[i]='z';
                          i++;
                          break;
                          case SDLK_RETURN :
                          continuer = 0;
                          break;
                      }
                      break;
                  }
          }
          return chaine;
          }
          • Partager sur Facebook
          • Partager sur Twitter
            8 juillet 2006 à 10:15:28

            Moi c'est plus compliqué, j'ai pris en compte le vérouillage clavier et tout :

            void demandePrenom ( char nom[] )
            {
                int continuer_demandePrenom = 1;
                int i = 0;
                SDL_Event event;
                while ( continuer_demandePrenom && i <= 20 )
                {
                switch(event.type)
                    {
                        case SDL_QUIT:
                            exit ( EXIT_SUCCESS );



                       
                        case SDL_KEYDOWN:

                            switch (event.key.keysym.sym)
                            {
                                case SDLK_a:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = 'A';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = 'A';
                                    else
                                        nom[i] = 'a';
                                    break;
                                case SDLK_b:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = 'B';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = 'B';
                                    else
                                        nom[i] = 'b';
                                    break;
                                case SDLK_c:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = 'C';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = 'C';
                                    else
                                        nom[i] = 'c';
                                    break;
                                case SDLK_d:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = 'D';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = 'D';
                                    else
                                        nom[i] = 'd';
                                    break;
                                case SDLK_e:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = 'E';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = 'E';
                                    else
                                        nom[i] = 'e';
                                    break;
                                case SDLK_f:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = 'F';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = 'F';
                                    else
                                        nom[i] = 'f';
                                    break;
                                case SDLK_g:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = 'G';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = 'G';
                                    else
                                        nom[i] = 'g';
                                    break;
                                case SDLK_h:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = 'H';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = 'H';
                                    else
                                        nom[i] = 'h';
                                    break;
                                case SDLK_i:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = 'I';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = 'I';
                                    else
                                        nom[i] = 'i';
                                    break;
                                case SDLK_j:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = 'J';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = 'J';
                                    else
                                        nom[i] = 'j';
                                    break;
                                case SDLK_k:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = 'K';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = 'K';
                                    else
                                        nom[i] = 'k';
                                    break;
                                case SDLK_l:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = 'L';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = 'L';
                                    else
                                        nom[i] = 'l';
                                    break;
                                case SDLK_m:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = 'M';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = 'M';
                                    else
                                        nom[i] = 'm';
                                    break;
                                case SDLK_n:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = 'N';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = 'N';
                                    else
                                        nom[i] = 'n';
                                    break;
                                case SDLK_o:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = 'O';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = 'O';
                                    else
                                        nom[i] = 'o';
                                    break;
                                case SDLK_p:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = 'P';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = 'P';
                                    else
                                        nom[i] = 'p';
                                    break;
                                case SDLK_q:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = 'Q';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = 'Q';
                                    else
                                        nom[i] = 'q';
                                    break;
                                case SDLK_r:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = 'R';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = 'R';
                                    else
                                        nom[i] = 'r';
                                    break;
                                case SDLK_s:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = 'S';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = 'S';
                                    else
                                        nom[i] = 's';
                                    break;
                                case SDLK_t:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = 'T';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = 'T';
                                    else
                                        nom[i] = 't';
                                    break;
                                case SDLK_u:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = 'U';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = 'U';
                                    else
                                        nom[i] = 'u';
                                    break;
                                case SDLK_v:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = 'V';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = 'V';
                                    else
                                        nom[i] = 'v';
                                    break;
                                case SDLK_w:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = 'W';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = 'W';
                                    else
                                        nom[i] = 'w';
                                    break;
                                case SDLK_x:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = 'X';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = 'X';
                                    else
                                        nom[i] = 'x';
                                    break;
                                case SDLK_y:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = 'Y';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = 'Y';
                                    else
                                        nom[i] = 'y';
                                    break;
                                case SDLK_z:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = 'Z';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = 'Z';
                                    else
                                        nom[i] = 'z';
                                    break;
                                case SDLK_0:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = '0';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = '0';
                                    break;

                                case SDLK_1:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = '1';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = '1';
                                    break;
                                case SDLK_2:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = '2';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = '2';
                                    break;
                                case SDLK_3:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = '3';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = '3';
                                    break;
                                case SDLK_4:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = '4';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = '4';
                                    break;
                                case SDLK_5:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = '5';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = '5';
                                    break;
                                case SDLK_6:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = '6';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = '6';
                                    break;
                                case SDLK_7:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = '7';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = '7';
                                    break;
                                case SDLK_8:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = '8';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = '8';
                                    break;
                                case SDLK_9:
                                    if ((event.key.keysym.mod & KMOD_LSHIFT) == KMOD_LSHIFT &&
                                        (event.key.keysym.mod & KMOD_CAPS) != KMOD_CAPS)
                                        nom[i] = '9';
                                    else if ((event.key.keysym.mod & KMOD_LSHIFT) != KMOD_LSHIFT &&
                                             (event.key.keysym.mod & KMOD_CAPS) == KMOD_CAPS)
                                        nom[i] = '9';
                                    break;




                                case SDLK_RETURN:
                                    nom[i] = '\0';
                                    if ( nom[0] != 0 )
                                        continuer_demandePrenom = 0;
                                    break;
                                case SDLK_BACKSPACE:
                                    nom[i - 1] = 0;
                                    i -= 2;
                                    break;

                            }
                            if ( nom[i] != 0 )
                                i++;
                            if ( i < 0 )
                                i = 0;
                           }

                    }
            }


            Il y a peut-etre des erreurs car c'est pas tout à fait mon code. Sinon ton code ne marche pas car on peut pas retourner une chaine.
            • Partager sur Facebook
            • Partager sur Twitter
              8 juillet 2006 à 10:17:45

              Nan mais ça va pas avec vos conditions à la c** là !? Vous croyez pas que c'est un peu long ?

              Dans l'idéal, le copié-coller ne doit JAMAIS être utilisé dans un code source, préférez les appels de fonction ou les boucles !


              Voici un code extrait d'un système d'Interface Utilisateur Graphique utilisant SDL que je suis en train de programmer (C++, mais vous devriez comprendre le principe) :

              /* Fonction à appeler avant tout */
              SDL_EnableUNICODE(1);

              bool GUI::Input::HandleKeyEvent(const SDL_Event& event)
              {
                  // S'il s'agit de la touche effacer
                  if(event.key.keysym.sym==SDLK_BACKSPACE)
                  {
                      // S'il y a quelque chose dans le champ
                      if(m_iLength>0)
                      {
                          // On efface le dernier caractère
                          m_pcCaption[m_iLength-1]='\0';
                          m_iLength--;
                      }
                  }
                  // Sinon, et si la longueur max n'est pas atteinte
                  else if(m_iLength<m_iMaxLength)
                  {
                      // Le caractère à traiter, en UTF
                      Uint16 u_carac = event.key.keysym.unicode;
                      char carac = '\0';
                     
                      // Regarde si ce caractère peut être utilisé
                      if( (m_uiChars & GUI::Input::ALLCHARS)
                       || (u_carac>='a' && u_carac<='z'
                                          && (m_uiChars & GUI::Input::MIN_LETTERS) )
                       || (u_carac>='A' && u_carac<='Z'
                                          && (m_uiChars & GUI::Input::MAJ_LETTERS) )
                       || (u_carac>='0' && u_carac<='9'
                                          && (m_uiChars & GUI::Input::DIGITS) )
                      )
                      {
                          // Unicode -> ISO-8859-15
                          if( ( (u_carac & 0xFF00) == 0x0000) // 1111 1111  0000 0000
                           && (u_carac != 0) )
                          {
                              carac = u_carac;

                              // Ajoute ce caractère
                              m_pcCaption[m_iLength] = carac;
                              m_iLength++;
                              m_pcCaption[m_iLength] = '\0';
                          }
                      }
                  }
              }

              Je passe ici par les codes unicodes renvoyés par SDL et j'utilise des flags (m_uiChars) pour restreindre les caractères utilisables.
              • Partager sur Facebook
              • Partager sur Twitter
                8 juillet 2006 à 11:10:11

                king29world et xabu ->Merci pour vos reponses je vais essayé.

                remram44->ton code c'est du C++ alors que je code en C mais merci quand meme!!

                edit: J'ai une question!dans ton code king29world il ne faut pas mettre
                char *nom

                au lieu de
                char nom
                ?
                • Partager sur Facebook
                • Partager sur Twitter
                  8 juillet 2006 à 11:22:15

                  A part le nom de la fonction, qui est en fait une méthode, ma fonction est valide en C !
                  Les variables dont le nom commence par m_ sont des membres de la classe, tu peux voir ça comme des globales ;) C'est exactement comme en C !
                  • Partager sur Facebook
                  • Partager sur Twitter
                    8 juillet 2006 à 11:24:23

                    Citation : Ludo57310



                    edit: J'ai une question!dans ton code king29world il ne faut pas mettre

                    char *nom


                    au lieu de

                    char nom

                    ?



                    Où ça?
                    Si c'est dans les paramètres :
                    char* nom
                    est pareil que
                    char nom[]
                    • Partager sur Facebook
                    • Partager sur Twitter
                      8 juillet 2006 à 11:26:51

                      Ok merci
                      j'ai essayé ton code il marche tres bien!!
                      je met resolu
                      Merci a tous!
                      • Partager sur Facebook
                      • Partager sur Twitter

                      entrer des caractere dans un tableau sous SDL

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown