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

 C Discussion :

Afficher une image en C avec SDL


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Afficher une image en C avec SDL
    Salut les amis,
    actuellement je suis des tutorials pour apprendre a programmer en c et je suis au niveau du chapitre concernant la SDL. Seulemt je rencontre un petit probleme. Je n'arrive pas a comprewndre pourquoi une image que j'ai envi de voir apparaitre sur une fenetre n'apparait pas. Voici mon code :

    Code C : 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
    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
     
    void pause();
    int main(int argc, char *argv[])
    {
    SDL_Surface *ecran = NULL, *imageDeFond = NULL;
    SDL_Rect positionFond;
     
    positionFond.x = 0;
    positionFond.y = 0;
     
    SDL_Init(SDL_INIT_VIDEO);
     
    SDL_WM_SetIcon(SDL_LoadBMP("sdl_icone.bmp"), NULL);
    ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE);
     
    SDL_WM_SetCaption("Chargement d'images en SDL", NULL);
     
    /* Chargement d'une image Bitmap dans une surface */
    imageDeFond = SDL_LoadBMP("lac_en_montagne.bmp");
     
     
    /* On blitte par-dessus l'écran */
    SDL_BlitSurface(imageDeFond, NULL, ecran, &positionFond);
     
    SDL_Flip(ecran);
     
    pause();
     
    SDL_FreeSurface(imageDeFond); /* On libère la surface */
    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;
    }
    }
    }

  2. #2
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Le code source ressemble a celui de Open ClassRoom , et y'a pas pire pour apprendre le C et la SDL.
    J'ai envie de dire si t'as envie de continuer a apprendre le C et la SDL oublie ce site ou arrête la prog
    Le code de présentation actuel est très mauvais je ne sais pas ce que essaye de faire l'auteur de ce code , mais c'est vraiment pas un bon code exemple a montrer (surtout pas a un débutant).

    Pour ton code normalement il doit bien afficher quelque chose mais faudrait peut être vérifier si tu lis bien ton image.
    Par exemple voir si imageDeFond ne renvoie pas NULL par exemple.

    Si tu veux continuer avec la SDL (surtout la 1.2) , je te conseille de pas faire de Jeux vidéo avant un long moment pour l'avoir touché depuis de longue année , je peux affirmé que la lib reste bas niveau et si on ne met pas une couche haut niveau avec celle ci elle reste très peu utilisable a l'état brut.

    PS: j'ose espérer que le code initiale possède une belle indentation.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Dans ce cas que me conseillerais-tu alors de faire? De modifier la version de ma SDL ou alors autre chose?

  4. #4
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    De quoi ? (j'ai pas compris ce que tu me demande).

    Il y a néanmoins un forum spécialisé dessus : https://www.developpez.net/forums/f6...nt-2d-3d-jeux/
    Si tu me demande si tu dois changer de techno pour faire du Jeux Vidéo voila sur ce forum ce qu'on dit souvent :
    -Choisir le langage / techno préférer ( C , C++ etc)
    -Pour le C , en général en le déconseille au débutant , trop long pour le maîtrisé , trop bas niveau , en général compte facile plusieurs année pour faire un Jeux Vidéo avec , par expérience personnel j'ai jamais vu de jeu fait en C en amateur ici sauf ceux qui ont deja bossé dans le milieu , il y'a de nos jours des techno plus adapté sans passé sa vie la dessus (sauf si t'es un passionné du C ) , comme Unity , Godot , Game Maker etc.
    -Si tu veux en faire ton métier plus tard le C tu peux deja oublier , la demande actuelle est C++ avec Unreal Engine ou C# avec Unity principalement et je doute qu'on fera un bond en arrière en programmant en C comme a l'ancienne :p

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Pour revenir au problème initial, c'est très certainement que l'image n'est pas trouvé dans le programme. Cela peut se vérifier en vérifiant la valeur retournée par SDL_LoadBMP(). En effet, celle-ci retourne NULL lorsqu'il y a un problème de chargement de l'image.
    Note : Toujours en programmation, si une image retourne un code d'erreur, il est impératif de vérifier ce dernier. Ce n'est pas pour rien que les fonctions indiquent d'une manière ou une autre, s'il y a une erreur ou non.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. Afficher une image en background avec CSS
    Par plante20100 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 29/10/2007, 17h16
  2. Afficher une image avec opengl
    Par kmaniche dans le forum OpenGL
    Réponses: 4
    Dernier message: 07/02/2006, 09h04
  3. Afficher une image avec swing
    Par arnonote dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 07/08/2004, 12h10
  4. PL/SQL - Comment afficher une image avec HTP ?
    Par patmaba dans le forum PL/SQL
    Réponses: 2
    Dernier message: 08/07/2004, 09h28
  5. Charger et afficher une image jpg avec les mfc
    Par glop - pas glop dans le forum MFC
    Réponses: 3
    Dernier message: 11/02/2004, 18h59

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