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

SDL Discussion :

Fenêtre noire et retourne 3


Sujet :

SDL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Fenêtre noire et retourne 3
    Hello tout le monde. Depuis peu, je me lance dans le graphique en C. N'ayant pas l'habitude de la SDL, je viens ici pour vous poser une question : Pourquoi ça marche pas .

    Alors le code en question :

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
    #include <SDL/SDL_ttf.h>
     
     
    int main(int argc, char *argv[])
     
    {
        // déclaration des variables.
        SDL_Surface *ecran = NULL, *texte = NULL;
        TTF_Font *police = NULL;
        SDL_Rect positionTexte;
        SDL_Color couleurNoire = {0, 0, 0};
        int continuer = 1;
     
        SDL_Event event;
     
        // initialisation de SDL et TTF
        SDL_Init(SDL_INIT_VIDEO);
        TTF_Init();
     
        // initialisation des variables
        police = TTF_OpenFont("gravity.ttf", 16);
        ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
        SDL_WM_SetCaption("Boisson", NULL);
        texte = TTF_RenderText_Blended(police, "Test", couleurNoire);
     
     
        // Positionnement du texte au debut du programme (au milieu de l’écran)
        positionTexte.x = ecran->w / 2 - texte->w / 2;
        positionTexte.y = ecran->h / 2 - texte->h / 2;
     
        // Boucle principale
        // tant que la variable continuer est a 1, on attend un évèment
        while (continuer)
        {
            SDL_WaitEvent(&event);
            switch(event.type)
            {
                case SDL_QUIT:
                    // exécuté quand l'utilisateur ferme la fenêtre : continuer est a 0 => on quitte la boucle
                    continuer = 0;
                    break;
                case SDL_MOUSEBUTTONDOWN:
                    /* si l'utilisateur clique sur le clic gauche de la souris, positionTexte prends la valeur de la position du curseur moins la moitié de la taille de la surface du texte (pour centrer le texte sur le clic)*/
                    if (event.button.button == SDL_BUTTON_LEFT)
                    {
                        positionTexte.x = event.button.x - texte->w/2;
                        positionTexte.y = event.button.y - texte->h/2;
                    }
                    break;
            }
            // Remplir le fond d'ecran : 
            SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
     
            // Blit le texte a la position choisie par l'utilisateur : 
            SDL_BlitSurface(texte, NULL, ecran, &positionTexte);
     
            // Rafraichir l'affichage
            SDL_Flip(ecran);
        }
     
        // liberer la mémoire
        TTF_CloseFont(police);
        TTF_Quit();
     
        SDL_FreeSurface(texte);
        SDL_Quit();
     
        // retourne 1 si le programme arrive à la fin (que l'utilisateur le ferme)
        return 1;
    }
    Alors mon soucis est le suivant, lorsque je compile cela je n'ai aucune erreur, mais lorsque j'exécute, une fenêtre noire (et non pas blanche) apparait un instant et disparait.

    Mon code retourne 3.

    Il semblerait que le programme n'entres pas dans le while et je ne comprends vraiment pas pourquoi.

    Sinon : SDL est bien installé, j'ai bien la police, les dlls sont a la place et SDL_TTF est bien linké.


    Je vous remercie par avance et vous souhaite une bonne journée.
    Arkhain

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Bonjour,

    Ton programme plante. Sur ma machine, une segfault est déclenchée à la ligne 27, erreur vraisemblablement provoquée par le fait que « police » est invalide, anomalie elle-même due au fait que l'ouverture de la police à la ligne 24 échoue probablement et que tu ne t'en rends pas compte. Vérifie que « gravity.ttf » existe bel et bien et qu'elle se trouve dans un répertoire exploré par la SDL (et donc par ton programme).

    Bon courage.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Il me semble que c'est bon à ce niveau la mais je vais vérifier, je vous tiens au courant.

    Merci de l'aide fournie .

Discussions similaires

  1. [QtCore] Appeler une deuxième fenêtre et en retourner une valeur
    Par dourouc05 dans le forum PyQt
    Réponses: 5
    Dernier message: 04/03/2015, 11h14
  2. Fenêtres noires sur Windows 7
    Par Juju54350 dans le forum Windows 7
    Réponses: 2
    Dernier message: 18/09/2014, 10h18
  3. Fenêtre noire, problème de rafraichissement.
    Par Froyok dans le forum Ogre
    Réponses: 6
    Dernier message: 12/10/2009, 20h26
  4. [Perl Tk sous Windows] Fenêtre noire indésirable
    Par Mersenne dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 30/03/2009, 19h25
  5. fichier .bat et fenêtre noir
    Par anisr dans le forum Général VBA
    Réponses: 1
    Dernier message: 01/06/2007, 23h57

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