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 :

Problème d'initialisation de la SDL


Sujet :

SDL

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 58
    Par défaut Problème d'initialisation de la SDL
    Bonjour!

    Je débute sous la SDL, et donc bien évidemment, j'ai des problèmes...
    Mais vu mon niveau qui est très bas malheureusement, je pense que mon erreur ne doit pas être très compliqué à résoudre!

    C'est du C, j'ai trois fichiers:

    Le main.c
    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
    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
    #include <SDL/SDL_image.h>
     
    #include "initialisation.h"
     
    void pause();
     
    int main(int argc, char *argv[])
    {
        SDL_Surface *ecran = NULL;
     
        initialisation(ecran);// il faudra envoyer la taille de l'ecran, le nom de la fenetre, l'icone de la fenetre
     
        SDL_Flip(ecran);
        pause();
     
        SDL_Quit();
     
        return EXIT_SUCCESS;
    }
     
    void pause()
    {
        int continuer = 1;
        SDL_Event event;
     
        while (continuer)
        {
            SDL_WaitEvent(&event);
            switch(event.type)
            {
                case SDL_QUIT:
                    continuer = 0;
            }
        }
    }
    Un fichier d'initialisation.c:
    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
    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
    #include <SDL/SDL_image.h>
     
    void initialisation(SDL_Surface* ecran)
    {
        if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER) == -1)
        {
            fprintf(stderr, "Erreur d'initialisation de la SDL : %s\n", SDL_GetError());
            exit(EXIT_FAILURE);
        }
     
        SDL_WM_SetIcon(IMG_Load("icone.bmp"), NULL);
     
        ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
        if (ecran == NULL)
        {
            fprintf(stderr, "Impossible de charger le mode vidéo : %s\nq", SDL_GetError());
            exit(EXIT_FAILURE);
        }
     
        SDL_WM_SetCaption("Chargement d'images en SDL", NULL);
     
    }
    et le .h d'initialisation.c:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #ifndef DEF_INITIALISATION
    #define DEF_INITIALISATION
     
    void initialisation(SDL_Surface* ecran);
     
    #endif
    Et j'aimerais savoir s'il est possible d'envoyer en même temps que la variable "ecran", d'autres variables tel que le nom de la fenêtre et l'icone de la fenêtre. Et comment faudrait-il changer le fichier initialisation.c par rapport à ça.

    Merci beaucoup!

  2. #2
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Bonjour,

    Déjà, il faut toujours tester le retour des fonctions SDL. Ensuite, il faut savoir qu'en C, on ne peut jamais changer la valeur d'une variable locale d'une fonction en la passant en argument à une fonction.

    Remarque que je ne dit pas qu'on ne peut pas changer une valeur d'une variable locale mais qu'il faudrait passer l'adresse pointant sur cette variable locale...

    Du coup, cela veut dire que ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void initialisation(SDL_Surface* ecran);
    ne peut jamais fonctionner si tu veux modifier la valeur de ecran...

    Par contre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SDL_Surface* initialisation(void);
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void initialisation(SDL_Surface** ecran);
    peuvent fonctionner.


    Et j'aimerais savoir s'il est possible d'envoyer en même temps que la variable "ecran", d'autres variables tel que le nom de la fenêtre et l'icone de la fenêtre. Et comment faudrait-il changer le fichier initialisation.c par rapport à ça.
    Il suffit de faire une fonction ayant ce prototype par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SDL_Surface* initialisation(char *nom, SDL_Surface* icone);
    Jc

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'initialisation
    Par Gryzzly dans le forum C
    Réponses: 3
    Dernier message: 26/12/2005, 12h24
  2. Problème d'initialisation de winsock
    Par benjiprog dans le forum C
    Réponses: 6
    Dernier message: 18/12/2005, 10h45
  3. Problème d'initialisation avec GLFW
    Par adrien357 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 23/10/2005, 18h29
  4. Problème d'initialisation variable tableau
    Par HeZiX dans le forum Langage
    Réponses: 3
    Dernier message: 08/06/2005, 16h30
  5. Pitié, aidez moi : Problème d'initialisation de postgreSQL
    Par ttalourd dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 16/11/2004, 12h10

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