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 :

Image qui ne s'affiche pas


Sujet :

SDL

  1. #1
    Membre à l'essai Avatar de Zanaki
    Homme Profil pro
    Hunter
    Inscrit en
    Novembre 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Hunter
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2017
    Messages : 20
    Points : 19
    Points
    19
    Par défaut Image qui ne s'affiche pas
    Bien le bonsoir tout le monde ! Et j'espère que je poste au bon endroit...

    Comme dis dans le titre, j'ai un soucis au niveau de l'image.
    Alors voilà; Je ne sais pas pourquoi, mais mon image ne s'affiche pas. Le code à l'air d'être bon, j'ai pas de message d'erreurs... Ah si, juste quelque warning quand avast préfère faire une analyse de 15 secondes... Sinon, non le code fonctionne très bien.
    En passant, j'ai une fenêtre de couleur blanche alors que le codes source qui m'as inspirer à la fenêtre est de couleur noir. Enfin, je pense que ça reste un détail, je ne sais pas.

    J'ai configurer ma fenêtre en 640*480 et donc, je me suis créer une image de la même taille c'est-à-dire 640*480.

    Du coup, passons à la pratique, je vais vous faire un copier/coller du code source. J'ai essayer de le commenter un maximum (Sauf la fin de page) et j'espère de tout coeur que vous pourrez m'aider, ça serait juste super

    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
     
    /*
         ***********************************************************************************
               --- Chargement des fichiers ---
         ***********************************************************************************
    */
    #include <stdio.h>
    #include <stdlib.h>
    #include <SDL2/SDL.h>
    #include <SDL2/SDL_image.h>
    #include <SDL2/SDL_ttf.h>
    #include <constantes.h>
     
    /*
         ***********************************************************************************
               --- Fonction principal ---
         ***********************************************************************************
    */
    int main(int argc, char* argv[])
    {
        SDL_Surface *ecran = NULL, *menu = NULL;
        SDL_Rect PosMenu;
        SDL_Event event;
     
        int fenetre = 1;  //Tant que Fenêtre = 1 La Fenêtre reste ouverte
     
        int imgFlags = IMG_INIT_JPG|IMG_INIT_PNG|IMG_INIT_TIF; // Flags pour charger le support du JPG, PNG et TIF
        const char* EcranTitre = "pictures/ecran titre/Menu.png";
     
    // ---------------------------------------------------------------------------------------
     
    /*
         ***********************************************************************************
               --- Demarrage des fonctions ---
         ***********************************************************************************
    */
        // Demarrage de la SDL
        if (SDL_Init(SDL_INIT_VIDEO) == -1)
        {
            fprintf(stderr, "Erreur lors de l'initialisation de la SDL : '%s'\n"); // Nous prévenir en cas d'erreur
            SDL_Quit(); // Arrêt de la SDL
            return -1;
        }
        // Demarrage de SDL_IMG
            if ( IMG_Init(imgFlags) != imgFlags )
        {
            fprintf(stderr,"Erreur lors de l'initialisation de la SDL_image : '%s'\n",IMG_GetError()); // Nous prévenir en cas d'erreur
            SDL_Quit(); // Arrêt de la SDL
            return -1;
        }
     
    // ---------------------------------------------------------------------------------------
     
    /*
         ***********************************************************************************
               --- Ajout d'une icon et Création de le fenêtre ---
         ***********************************************************************************
    */
    // Ici on placera le code qui permettra de placer une icon à la place du .exe de base
     
        ecran = SDL_CreateWindow("Le nom du Jeux",        // Afficher le nom de la fenêtre
                                 SDL_WINDOWPOS_CENTERED, // Signifie que nous centrons la fenêtre par rapport à l'axe X
                                 SDL_WINDOWPOS_CENTERED,// Signifie que nous centrons la fenêtre par rapport à l'axe Y
                                 LARGEUR_FENETRE,      // Taille X - La largeur de la fennêtre (Les parametre son pré-crée dans le fichier Constantes.h)
                                 HAUTEUR_FENETRE,     // Taille Y - La hauteur de la fennêtre (Les parametre son pré-crée dans le fichier Constantes.h)
                                 SDL_WINDOW_SHOWN);  // (Flags) Ce paramettre est peu spécial, il faut toujours mettre SDL_WINDOW_SHOWN.
                                                    //Plus tars, ce sera ici que l'on indiquera à la SDL que nous souhaiterons utiliser OpenGL
    // ---------------------------------------------------------------------------------------
     
        menu = IMG_Load(EcranTitre);
        PosMenu.x = 0;
        PosMenu.y = 0;
     
            if ( fenetre != NULL )
        {
            menu = IMG_Load(EcranTitre);
            if ( menu == NULL )
            {
                fprintf(stderr,"Erreur de chargement de l'image %s : %s\n",EcranTitre,IMG_GetError());
                SDL_DestroyWindow(fenetre);
     
                return -3;
            }
     
        }
     
            while (fenetre)
            {
                SDL_WaitEvent(&event);
                switch(event.type)
                {
                case SDL_QUIT:
                    fenetre = 0;
                    break;
                case SDL_KEYDOWN:
                    switch(event.key.keysym.sym)
                    {
                    case SDLK_ESCAPE:
                        fenetre = 0;
                        break;
                    }
                }
     
            }
     
        return 0;
    }
    Je vous dis un grand merci d'avance et à bientôt

  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 bon endroit serait la section SDL , pas tout ceux qui font du C connaissent la SDL.

    Normale qu'il n'affiche rien , il n'ya aucun code qui indique qu'il faut afficher quoi que ce soit (tu créer juste une fenêtre , charge un image et attend des evenement) ,il manque SDL_UpdateWindowSurface(ecran);
    L'autre point il y'a 2 code identique (et donc un qui sert a rien) : menu = IMG_Load(EcranTitre); , d'ailleurs a cause de c'est deux code , ton programme possède donc une fuite de mémoire

    Ne pas oublier de mettre un SDL_FreeSurface(menu); a la fin de ton programme.

  3. #3
    Membre à l'essai Avatar de Zanaki
    Homme Profil pro
    Hunter
    Inscrit en
    Novembre 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Hunter
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2017
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    Oh toutes mes excuses... Je chercherais mieux à l'avenir.

    il manque SDL_UpdateWindowSurface(ecran);
    Ne pas oublier de mettre un SDL_FreeSurface(menu);
    "
    Oh d'accord... Mais je ne comprends pas, sur l'autre code il y a aucune des fonctions cités.

    Voici un autre codes qui fonctionne très bien.
    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
     
    #include <sdl2>
    #include <sdl2>
    #include <stdio.h>
     
    void wait(void)
    {
        SDL_Event event;
        while(SDL_WaitEvent(&event) && event.type != SDL_QUIT);
    }
     
    int main(int argc, char *argv[])
    {
        int statut = -1;
        if(0 != SDL_Init(SDL_INIT_VIDEO))
            fprintf(stderr, "Erreur SDL_Init : %s", SDL_GetError());
        else
        {
            SDL_Window *window = SDL_CreateWindow("IMG", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
                                                  640, 480, SDL_WINDOW_SHOWN);
            if(!window)
                fprintf(stderr, "Erreur SDL_CreateWindow : %s", SDL_GetError());
            else
            {
                SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
                if(!renderer)
                    fprintf(stderr, "Erreur SDL_CreateRenderer : %s", SDL_GetError());
                else
                {
                    SDL_Texture *texture = IMG_LoadTexture(renderer, "S.png");
                    if(!texture)
                        fprintf(stderr, "Erreur IMG_LoadTexture : %s.", IMG_GetError());
                    else
                    {
                        SDL_RenderCopy(renderer, texture, NULL, NULL);
                        SDL_RenderPresent(renderer);
                        wait();
                        statut = 0;
                        SDL_DestroyTexture(texture);
                    }
                    SDL_DestroyRenderer(renderer);
                }
                SDL_DestroyWindow(window);
            }
            SDL_Quit();
        }
        return statut;
    }
    Du coup, je vais devoir changer mon code, parce qu'apparemment en SDL2 On essaies de travailler avec des Texture et Non des Surface.

    Un grand merci pour ta réponse.

  4. #4
    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,

    Pourtant, on peut toujours afficher des SDL_Surface, comme expliqué ici : http://alexandre-laurent.developpez....tes-sdl-2/#LII
    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.

  5. #5
    Membre à l'essai Avatar de Zanaki
    Homme Profil pro
    Hunter
    Inscrit en
    Novembre 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Hunter
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2017
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    Merci beaucoup pour ta réponse.

    Oui, j'avais déjà lu cet article. Mais je n'arrive toujours pas a afficher une image... C'est fous ! J'ai changer mon code plusieurs fois.

    En faites, j'essaie juste de faire un petit Écran Titre avec Commencer, Continuer et Quitter. Où l'ont pourra avec les flèches du clavier choisir entre les choix proposés.

    Du coup, je charge les images et malgré tout, le résultat me donne un écran blanc. Je commence dans l'ordre, c'est-à-dire je veux d'abord afficher une image avec l'option Commencer.

    Je regarde des tutoriaux, je prends des exemples etc... Rien ne fonctionne. Mais je dois avoir un problème dans les divers codes que j'ai codés, parce que quand je copie/colle un exemple déjà fait, il n'y à pas de soucis et l'image s'affiche bien.
    Enfin bref, je continue de chercher et à force j'y arriverais.

  6. #6
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 379
    Points
    20 379
    Par défaut
    salut ça ne serait pas un problème de chemin d'accès à l'image ?
    Je regarde des tutoriaux, je prends des exemples etc... Rien ne fonctionne.
    alors ça ne vient pas de SDL mais de la carte graphique , de l'OS.
    Quel carte graphique, quel OS ?

  7. #7
    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
    Citation Envoyé par Zanaki Voir le message
    Je regarde des tutoriaux, je prends des exemples etc... Rien ne fonctionne. Mais je dois avoir un problème dans les divers codes que j'ai codés, parce que quand je copie/colle un exemple déjà fait, il n'y à pas de soucis et l'image s'affiche bien.
    Les tutoriaux ou cours c'est une aide , le principal c'est surtout de bien comprendre le code et ce qu'on fait.
    J'ai l'impression que tu bidouille plus que tu ne code , j'avais dit un peu avant "tu créer juste une fenêtre , charge un image et attend des evenement" , ça me semble évident sans être une brute en code que y'avait aucun code qui dit d'afficher quoique ce soit.

    Citation Envoyé par Zanaki Voir le message
    Enfin bref, je continue de chercher et à force j'y arriverais.
    Je suis le premier a dire qu'il faut tester ce qu'on lit , mais dans ton cas je pense que tu devra te concentrer un peu plus sur la théorie , le C c'est un langage pervers , il est simple mais sa simplicité oblige au programmeur de savoir absolument tout ce qu'il fait , rien n'est magique (je dis cela parce que c'est pas on mettant des bouts de code a droite ou a gauche que ça va marcher , c'est pas game maker ) si tu manque de rigueur le C te le fera payer assez cher

    Note : si rigueur est sur-souligné , c'est que je pense qu'il t'en manque énormément et dans le C il faut avoir une rigueur proche de la paranoïa !

  8. #8
    Membre à l'essai Avatar de Zanaki
    Homme Profil pro
    Hunter
    Inscrit en
    Novembre 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Hunter
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2017
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    Merci à tous pour vos réponses.

    @Mat.M
    Quel carte graphique, quel OS ?
    Je suis sous windows, je code via Code::Blocks et j'ai une cartes graphique GForce gtx 1080 gaming X Twin FROZR VI

    @Kannagi
    Les tutoriaux ou cours c'est une aide , le principal c'est surtout de bien comprendre le code et ce qu'on fait.
    Oui, oui, c'est exactement ça ! Je veux comprendre tout se que je fais. C'est peut-être pour ça, que ça ne m'intéresse pas de prendre un code déjà tout fais et le modifier. Je veux que ça soit codé par moi et personne d'autre

    @Kennagi
    J'ai l'impression que tu bidouille plus que tu ne code
    Oui, c'est vrai, je bidouille pas mal, je fais des tests, des exercices. Mais dans un sens c'est pas plus mal, même si j'ai du mal à faire se dont je souhaite, j'apprends tout de même pas mal de choses.

    @Kannegi
    tu créer juste une fenêtre , charge un image et attend des evenement
    Tu sais que cette phrase, je me la répète plusieurs fois; Exemple je lit mon code et je me dis; Ici -> Je créer une fenêtre. Là -> Je charge l'/les image(s)...

    @Kannegi
    (je dis cela parce que c'est pas on mettant des bouts de code a droite ou a gauche que ça va marcher , c'est pas game maker )
    Oh mais crois moi, je ne met pas de bouts de code que je trouve un peu partout. Je prends des exemples pour tester et comprendre leurs fonctionnement. Ensuite pour un débutant comme moi rien n'est facile, dès qu'il y a une fonction que je ne comprends pas, je cherche directement sur internet la définition de la fonction ainsi que des exemples donnés avec celle-ci.

    @Kannegi
    si tu manque de rigueur le C te le fera payer assez cher
    Je ne comprends pas le sens de ta phrase, que veux dire par rigueur ??

    Dans tout les cas, j'ai la soif d'apprendre ! Et peu importe le temps que ça prendra avant de pouvoir concrétisé un petit projet. Pour l'heure je continue d'apprendre.
    Je vous un grand merci pour vos réponses et j'apprécie grandement votre honnêteté !

  9. #9
    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 souci de la SDL , c'est qu’elle n'est pas une lib "caché" pour bien l'utiliser tu dois savoir comment elle fonctionne et surtout comment marche les pointeurs !
    Et même si tu arrive a coder seul afficher une image , la faire bouger et des event clavier/souris , tu es encore loin d'un jeu , tu peux codé de manière brut mais par expérience perso c'est complètement inefficace a une certain niveau.
    Donc que tu sois motivé c'est bien , mais c'est pas un gage de réussite je te conseille deja de faire du sandbox , fait du code que tu maîtrise et quand tu le maîtrisera tu ira plus loin (et quand je dis plus loin c'est deja le B.A.BA le C sans SDL).

    Citation Envoyé par Zanaki Voir le message
    Je ne comprends pas le sens de ta phrase, que veux dire par rigueur ??
    Le Langage C est relativement simple , je veux dire je connais pas ton niveau sur ce langage mais je serait pas surpris que tu connais deja 50% du langage.
    Mais pour codé en C il faut avoir un rigueur cela veut dire que tu sais absolument tout ce que tu fait au moindre détails par exemple tu as écrit ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    menu = IMG_Load(EcranTitre);
        PosMenu.x = 0;
        PosMenu.y = 0;
     
            if ( fenetre != NULL )
        {
            menu = IMG_Load(EcranTitre);
    Outre que la condition ne sert a rien ici parce que en haut tu écrit fenetre = 1;
    Tu charge donc 2 fois menu avec le même pointeur , le pointeur ne te donnera pas l'adresse du premier IMG_Load ben tu as perdu l'adresse pour toujours et c'est ce qu’on appelle une fuite de mémoire.
    C'est de ce genre de rigueur que je parle.

    Un exemple concret de ton voisin ,: son jeu fait 138 mo et prend trop de calcul pour ce que ça fait : https://www.developpez.net/forums/d1...000-sdl-1-2-a/
    Manque de rigueur dans le sens ou il ne sait pas lui même pourquoi.

    Mais tout cela c'est normal si le C est un langage déconseillé (malgré sa facilité apparente) c'est qu'il faut être sacrément bon pour ne pas faire n'importe quoi.
    Moi je ne lui jette pas la pierre mes premiers programme en C devait être du même acabit , mais j'ai eu un prof (et de bon sempai en Master) pendant mes études qui m'ont appris beaucoup de chose sur la programmation en C la méthodologie a utilisé , la rigueur et la programmation modulaire.
    Et si tu as envie de vraiment codé sur ce langage le bidouillage c'est cool au début , mais tu vas tomber sur un mur quand tu voudra utilisé cette méthode pour faire un jeu.

  10. #10
    Membre à l'essai Avatar de Zanaki
    Homme Profil pro
    Hunter
    Inscrit en
    Novembre 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Hunter
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2017
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    Ouais je comprends tout à fais, et je ne veux pas codé de façon brut. Je veux que mon code soit compréhensif et pas seulement grâce aux commentaires. Ensuite, je ne cherche pas vraiment a faire une belle réussit, à ouvrir une société ou à en faire un métier. Je veux juste comprendre comment se langage fonctionne. Je sais très bien qu'il me faudra plusieurs années mais dans l'immédiat, je veux juste réussir à faire les objectifs que je me suis donner. Ensuite, j'ai pris pour exemple un écran titre de jeux, mais, c'est pas pour autant que je vais continuer le jeux une fois l'écran titre terminer. Parce qu'entre nous, si j'aurais voulu faire un jeu, l'écran ça aurait été la dernière étape.

    @Kannagi
    Le Langage C est relativement simple , je veux dire je connais pas ton niveau sur ce langage mais je serait pas surpris que tu connais deja 50% du langage.
    Ça revient a se que je disais, Étant débutant rien n'est simple pour moi. Puis, pour te donner un aperçus, ça doit faire environs une semaines que j'apprends le C. Je sais pertinemment qu'il me reste encore beaucoup de progrès à faire et les tutoriaux en console, je l'es aient déjà terminer 2-3 fois. Je suis arriver au moment où ils nous parlent de la SDL et depuis se temps, j'apprends la SDL.

    Maintenant il est vrai que depuis l'arriver de la SDL, la complication se fais grandement sentir.

    Outre que la condition ne sert a rien ici parce que en haut tu écrit fenetre = 1;
    Tu charge donc 2 fois menu avec le même pointeur , le pointeur ne te donnera pas l'adresse du premier IMG_Load ben tu as perdu l'adresse pour toujours et c'est ce qu’on appelle une fuite de mémoire.
    C'est de ce genre de rigueur que je parle.
    Mais oui, mais exactement, c'est des petites erreurs comme celle-là que je devrait éviter.

    La fenêtre = 1 du coup, si la fenêtre = NULL si je dis pas de bêtise le programme considérera que la fenêtre = 0 étant donné que NULL est une adresse réserver à l'os et que NULL est toujours = à 0 (Permission de me corrigés si vraiment j'ai totalement faux.)

    Du coup, se code veux dire;
    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
     
        menu = IMG_Load(EcranTitre);  //On charge l'image stocker dans la variable
        PosMenu.x = 0; // On place les coordonnée en X à 0 
        PosMenu.y = 0; // On place les coordonnée en Y à 0
     
            if ( fenetre != NULL ) // Si fenêtre est différent ! ou = à 0/rien
        {
            menu = IMG_Load(EcranTitre); // On charge encore l'image (Qui ne sers à rien)
            if ( menu == NULL ) // Si variable menu = à 0/rien
            {
                fprintf(stderr,"Erreur de chargement de l'image %s : %s\n",EcranTitre,IMG_GetError()); // On affiche un message d'erreur
                SDL_DestroyWindow(fenetre); // On détruis le contenu stocker dans la variable fenetre qui ainsi fermera le programme
     
                return -3;
            }
     
        }
    Je me suis permis d'écrire les commentaire dans se petit codes, pouvez-vous me dire si j'ai vu juste ou alors, je suis complétement à cotés de la plaque. Si c'est le cas, je vais reprendre mon apprentissage depuis le début.

    @Kannagi
    Mais tout cela c'est normal si le C est un langage déconseillé (malgré sa facilité apparente) c'est qu'il faut être sacrément bon pour ne pas faire n'importe quoi.
    J'ai mis plusieurs jours à me décidé quel langage je pourrais apprendre, c'est pas venu tout seul, et personne à parler que le langage C été déconseiller... Du moins dans les article que j'ai lu bien évidemment.

    @Kannagi
    mais j'ai eu un prof (et de bon sempai en Master)
    C'est dans ces moment là, que je me dis que moi aussi j'aimerais avoir un prof, une personne pour me guidé, mais bon internet/Google fais partie de mes meilleures amis alors je me plain pas

    @Kannagi
    Et si tu as envie de vraiment codé sur ce langage le bidouillage c'est cool au début , mais tu vas tomber sur un mur quand tu voudra utilisé cette méthode pour faire un jeu.
    Comment pourrais-je apprendre si je ne fais pas de test, si je ne "bidouille" pas ?? Faut bien commencer quelque part. Comme tu dis "Rien n'est magique" Et je pense qu'il faut 1% de talent et 99% d'entrainement/d'apprentissage pour réussir a avoir le résultat souhaiter. Par conséquent, quand je lis un article je passe plusieurs dixième de minutes pour comprendre l'intégralités du code. Je suis pas une personne qui code pour donné de l'importance, je code parce que j'aime ça !

    Si le bidouillage est une mauvaise idée, tu me conseil de procédé de quel façon ?? Parce que je comprends que ça va me ramener à un mur, mais le mur est omniprésent quand tu débute, chaque choses est criblés d'embuches !

    Dans tout les cas merci beaucoup pour ta réponse, je trouve cela très instructif ! Vraiment désolé, si je te fais perdre ton temps.

  11. #11
    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
    La fenêtre = 1 du coup, si la fenêtre = NULL si je dis pas de bêtise le programme considérera que la fenêtre = 0 étant donné que NULL est une adresse réserver à l'os et que NULL est toujours = à 0 (Permission de me corrigés si vraiment j'ai totalement faux.)
    Oui mais fenêtre n'est pas une adresse (c'est une variable) donc la define NULL n'est pas vraiment approprié !
    NULL sert a voir la validité d'un pointeur pas vraiment a faire de la comparaison booleen (0 ou 1 par exemple comme dans ton cas ).

    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
    menu = IMG_Load(EcranTitre);  //On charge l'image stocker dans la variable
        PosMenu.x = 0; // On place les coordonnée en X à 0 
        PosMenu.y = 0; // On place les coordonnée en Y à 0
     
            if ( fenetre != NULL ) // Si fenêtre est différent ! ou = à 0/rien
        {
            menu = IMG_Load(EcranTitre); // On charge encore l'image (Qui ne sers à rien)
            if ( menu == NULL ) // Si variable menu = à 0/rien
            {
                fprintf(stderr,"Erreur de chargement de l'image %s : %s\n",EcranTitre,IMG_GetError()); // On affiche un message d'erreur
                SDL_DestroyWindow(fenetre); // On détruis le contenu stocker dans la variable fenetre qui ainsi fermera le programme
     
                return -3;
            }
     
        }
    Alors "menu = IMG_Load(EcranTitre); //On charge l'image stocker dans la variable" , EcranTitre c'est une chaîne de caractere , et plus précisément un tableau.
    La phrase ne veut rien dire on est d'accord ? "charge l'image stocker dans la variable" , il y'a pas d'image dans une variable :p
    Par contre IMG_Load va lire sur ton DD , demander a ton OS (avec fopen fgetc etc etc ) de le lire , et il va le stocker en mémoire (grace a malloc), et ensuite il va te filer le pointeur d'une structure (qui possède cette image).

    " PosMenu.x = 0; // On place les coordonnée en X à 0 ", j'appelle ceci initialiser X , en soit tu place rien du tout.

    " if ( fenetre != NULL ) // Si fenêtre est différent ! ou = à 0/rien " , oui mais NULL n'est pas le meilleur choix comme define

    " if ( menu == NULL ) // Si variable menu = à 0/rien" ok.

    "fprintf(stderr,"Erreur de chargement de l'image %s : %s\n",EcranTitre,IMG_GetError()); // On affiche un message d'erreur" oui

    " SDL_DestroyWindow(fenetre); // On détruis le contenu stocker dans la variable fenetre qui ainsi fermera le programme" oui et non , il ne ferme pas ton programme , tu aura juste plus de fenêtre ! Mais ton programme continu.
    "return -3;" ici oui ton programme se termine renvoyant -3

    J'ai mis plusieurs jours à me décidé quel langage je pourrais apprendre, c'est pas venu tout seul, et personne à parler que le langage C été déconseiller... Du moins dans les article que j'ai lu bien évidemment.
    Si l'article en question venait Open Classroom , c'est normal !

    Comment pourrais-je apprendre si je ne fais pas de test, si je ne "bidouille" pas ?? Faut bien commencer quelque part. Comme tu dis "Rien n'est magique" Et je pense qu'il faut 1% de talent et 99% d'entrainement/d'apprentissage pour réussir a avoir le résultat souhaiter. Par conséquent, quand je lis un article je passe plusieurs dixième de minutes pour comprendre l'intégralités du code. Je suis pas une personne qui code pour donné de l'importance, je code parce que j'aime ça !

    Si le bidouillage est une mauvaise idée, tu me conseil de procédé de quel façon ?? Parce que je comprends que ça va me ramener à un mur, mais le mur est omniprésent quand tu débute, chaque choses est criblés d'embuches !
    Je ne suis pas prof , mais je t'invite a créer un nouveau topic en disant "comment bien apprendre sans bidouiller" sur le forum C , il y'a des personnes plus calé que moi qui te répondront (il y'a beaucoup de prof qui y traîne , ils sauront te conseiller avec une bonne pédagogie).

  12. #12
    Membre à l'essai Avatar de Zanaki
    Homme Profil pro
    Hunter
    Inscrit en
    Novembre 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Hunter
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2017
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    En tout cas merci beaucoup pour tes réponses ! Tu es vraiment précis et mine de rien, j'ai appris pas mal de choses. Je vais faire comme tu me l'as dis: faire un autre topique.

    Si le C est un langage vraiment mauvais, alors je vais en chercher un autre (Comme je t'es dis, se que j'aime s'est codé, peu importe le langage à l'exception du python).

    J'aimerais trouver un langage qui puissent m'épanouir un langage évolutif, un langage qui me permettra peut-être d'aller loin (Non je veux toujours pas en faire un métier).

    Puis, je préfère changer de langage maintenant avant de le regretter par la suite.

Discussions similaires

  1. [WebForms]Image qui ne s'affiche pas
    Par Filippo dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 19/12/2007, 20h51
  2. images qui ne s'affichent pas
    Par mikees dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 24/08/2006, 23h31
  3. background image qui ne s'affiche pas :(
    Par vermo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 26/08/2005, 10h01
  4. [HTML]Image qui ne s'affiche pas sous firefox...
    Par OrangeBud dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 13/10/2004, 13h42
  5. [debutant][Tomcat]Images qui ne s'affichent pas
    Par omega dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 07/04/2004, 09h44

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