Partage
  • Partager sur Facebook
  • Partager sur Twitter

SDL/C : constante obligatoire dans un switch ?

Comment modifié les commandes

    23 juin 2017 à 21:31:03

    Bonjour, je souhaite réalisé un menu qui permette à l'utilisateur de changer les raccourcis claviers.

    Du cout dans le switch(event.key.keysym.sym), je souhaiterai mettre par exemple une variable, mais la compil m'exige une constante :/ et le but étant de pouvoir modifié cette variable dans un menu lancé après l'envent escape par exemple.

    Je vous montre le code tel qu'il est ( sans modif des hotkeys ) et après tel que je le voudrais pour 'varier' les hotkeys :

    case SDL_KEYDOWN:
                switch(event.key.keysym.sym)
                {
                case SDLK_DOWN:
                    continu=Is_BlockCanAndMoove(board,DOWN);
                    Game_Print(board,screen);
                    break;
                case SDLK_RIGHT:
                    continu=Is_BlockCanAndMoove(board,RIGHT);
                    Game_Print(board,screen);
                    break;
                case SDLK_LEFT:
                    continu=Is_BlockCanAndMoove(board,LEFT);
                    Game_Print(board,screen);
                    break;
                case SDLK_UP:
                    Block_Rotation(board);
                    Game_Print(board,screen);
                    break;
                case SDLK_ESCAPE:
                    return true;
                    break;
                default :
                     ;
                }

    Et ce que je voudrais faire :

    switch(event.key.keysym.sym)
                {
                case board->key_control[K_DOWN]:
                    continu=Is_BlockCanAndMoove(board,DOWN);
                    Game_Print(board,screen);
                    break;
                case board->key_control[K_RIGHT]:
                    continu=Is_BlockCanAndMoove(board,RIGHT);
                    Game_Print(board,screen);
                    break;
                case board->key_control[K_LEFT]:
                    continu=Is_BlockCanAndMoove(board,LEFT);
                    Game_Print(board,screen);
                    break;
                case board->key_control[K_UP]:
                    Block_Rotation(board);
                    Game_Print(board,screen);
                    break;
                case SDLK_ESCAPE:
                    return true;
                    break;
                default :
                     ;
                }

    key_control est un tableau d'int, qui aurait la valeur de la touche en question ex :SDLK_a vaut 97, si l'utilisateur veut taper a à la place de flèche du haut key_control[K_UP] serait égal à 97.

    Et l'erreur est : error 'board' cannot appear in a contant expression, donc me voila bloquer pour la faire varier cette expression :/

    Si vous avez une astuce pour contourner ou résoudre ce problème hésitez pas


    -
    Edité par Golgoo 23 juin 2017 à 21:31:47

    • Partager sur Facebook
    • Partager sur Twitter
      24 juin 2017 à 0:36:11

      La valeur de chaque case doit-être calculable lors de la compilation je crois. Donc une valeur "brute" ou bien un #define par exemple.
      • Partager sur Facebook
      • Partager sur Twitter

      SDL/C : constante obligatoire dans un switch ?

      × 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