Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de menu avec SDL

difficile à expliquer

    16 juillet 2006 à 15:56:59

    Bonjour
    Voici le code de ma fonction qui affiche le menu d'un jeu :

    void Menu(SDL_Surface *ecran, TTF_Font *police_menu, int mode, int niveau, int choix)
    {
      // Déclaration des variables
      SDL_Rect position_mode, position_niveau, position_fleche;
      SDL_Color blanc = {255, 255, 255};
      SDL_Surface *surface_mode, *surface_niveau, *surface_fleche;
      char texte_mode[25], texte_niveau[25], texte_fleche[1];
     
      // Préparation du mode   
      if(mode == 1)
        sprintf(texte_mode, "  Game Mode :      1P vs CPU");
      else if(mode == 2)
        sprintf(texte_mode, "  Game Mode :      1P Only  ");
      else if(mode == 3)
        sprintf(texte_mode, "  Game Mode :      2 Players")
     
      // Préparation du niveau
      if(niveau == 1 && mode == 1)
        sprintf(texte_niveau, "  CPU Difficulty : Easy     ");
      else if(niveau == 2 && mode == 1)
        sprintf(texte_niveau, "  CPU Difficulty : Medium   ");
      else if(niveau == 3 && mode == 1)
        sprintf(texte_niveau, "  CPU Difficulty : Hard     ");
      else if(mode != 1)
        sprintf(texte_niveau, "  CPU Difficulty : N / A    ");
     
      // Préparation de la flèche
      //sprintf(texte_fleche, "-");
      position_fleche.x = 60;
      if(choix == 1)
        position_fleche.y = 325;
      else if(choix == 2)
        position_fleche.y = 355;
     
     
      // Ecriture du texte dans la surface
      surface_mode = TTF_RenderText_Solid(police_menu, texte_mode, blanc);
      surface_niveau = TTF_RenderText_Solid(police_menu, texte_niveau, blanc);
      surface_fleche = TTF_RenderText_Solid(police_menu, texte_fleche, blanc);
     
      // Préparation des positions
      position_mode.x = LARGEUR_FENETRE / 2 - surface_mode->w / 2;
      position_mode.y = 325;
      position_niveau.x = position_mode.x;
      position_niveau.y = 355;
     
      // Blittage des surfaces
      SDL_BlitSurface(surface_mode, NULL, ecran, &position_mode);
      SDL_BlitSurface(surface_niveau, NULL, ecran, &position_niveau);
      //SDL_BlitSurface(surface_fleche, NULL, ecran, &position_fleche);
     
      return;
    }


    En fait dans mon main je modifie la valeur de mode, niveau et choix et la fonction se charge d'afficher le tout, mais tout se met à déconner quand je décommente le dernier BlitSurface et le sprintf(texte_fleche, "-"), en fait la ligne CPU Difficulty ne s'affiche plus... Par contre ca fonctionne bien avec les lignes commentées...

    Quelqu'un a une idée ?
    merci d'avance :)
    • Partager sur Facebook
    • Partager sur Twitter

    Problème de menu avec 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