Partage
  • Partager sur Facebook
  • Partager sur Twitter

PB Mario sodokan - écran noir

    20 janvier 2021 à 17:54:39

    Salut à tous !

    Je me suis enfin lancé sur la SDL et je suis au TP de mario Sodokan. Actuellement j'essaye simplement d'initialiser la page d'accueil avec une photo jpg fournie dans le dossier. Cependant quand j'éxécute le programme j'ai un écran noir et pas d'image de fond... Je link bien les libs à la compile.

    /******************************************************************************************
    *Title: Home Page Mario Sodokan
    *Author : 
    *Reviewer: 
    *Description:
    *Status: in developpment
    *****************************************************************************************/
    #include <SDL/SDL.h> /* SDL */
    #include <SDL/SDL_image.h> /* Inclusion du header de SDL_image (adapter le dossier au besoin) */
    #include "mario_sodokan.h"
    
    SDL_Surface *HomePage()
    {
    
    	SDL_Surface *screen = NULL;
    	SDL_Surface *home = NULL;
    	SDL_Rect position_home;
    	
    	position_home.x = 0;
    	position_home.y = 0;
    	
    	SDL_Init(SDL_INIT_VIDEO);
        SDL_WM_SetIcon(IMG_Load("caisse.jpg"), NULL);
        screen = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE | SDL_VIDEORESIZE);
        SDL_WM_SetCaption("Mario Sodokan", NULL);
        
        home = IMG_Load("menu.jpg"); 
    	SDL_BlitSurface(home, NULL, screen, &position_home);
    	
        
        ChoiceHomePage();
        
    	return screen;
    }
    
    void ChoiceHomePage()
    {
    	int continuer = 1;
        SDL_Event event;
        SDL_Rect position_screen;
     
        while (continuer)
        {
            SDL_WaitEvent(&event);
            switch (event.type)
            {
                case SDL_QUIT:
                    continuer = 0;
                case SDL_VIDEORESIZE:
       				position_screen.x = event.resize.w / 2;
        			position_screen.y = event.resize.h / 2;
        			break;
        		case SDL_KEYDOWN:
                    switch (event.key.keysym.sym)
                    {
                        case SDLK_1:
                            continuer = 0;
                            break;
                        case SDLK_2:
                            continuer = 0;
                            break;                 
                    }
                    
                    break;
            }
        }
    }
    
    

    Voila si quelqu'un à une astuce je suis preneur !

    • Partager sur Facebook
    • Partager sur Twitter
      20 janvier 2021 à 18:01:10

      Hello,

      Oublie sdl 1.x, obsolète. Passe à la 2.x

      A part ça, tu oubies un SDL_Flip() après la ligne 28

      -
      Edité par edgarjacobs 20 janvier 2021 à 18:06:12

      • Partager sur Facebook
      • Partager sur Twitter

      On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

        20 janvier 2021 à 21:02:55

        Salue Edgar, tu parles de la version de la SDL ? Je crois avoir DL la SDL2 d’ailleurs. Donc dans les include je dois mettre SDL2 du coup à la place ?
        • Partager sur Facebook
        • Partager sur Twitter
          20 janvier 2021 à 21:23:08

          Salut, c'est plus compliqué que ça, il faut télécharger tes lib et headers et changer ton code : SDL_SetVideoMode() n'existe plus, on n'utilise plus des pointeurs sur SDL_Surface pour la fenêtre mais sur SDL_Window. Regarde de ce côté
          • Partager sur Facebook
          • Partager sur Twitter
            20 janvier 2021 à 21:34:34

            KevinGL merci pour l'info ! Ca serait bien qu'OCR se mette à jour car je viens de voir que la nouvelle SDL date de 2013... J'espère qu'il n'y a pas tant de changements que ca sinon tout mon code sera faux
            • Partager sur Facebook
            • Partager sur Twitter
              20 janvier 2021 à 21:39:09

              Il y a plein de nouveautés intéressantes dans SDL2, notamment le multi fenêtrage, la gestion des textures ...
              • Partager sur Facebook
              • Partager sur Twitter
                20 janvier 2021 à 21:43:00

                faut déjà que j'arrive à fixer mes soucis car la j'ai retélécharger la SDL2 cependant quand j'inclus SDL2/SDL... j'ai des problemes à la compilation
                • Partager sur Facebook
                • Partager sur Twitter
                  20 janvier 2021 à 21:45:33

                  Il dit quoi ton compilateur ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    20 janvier 2021 à 21:58:47

                    Bon j'ai réussis à tout bien installer, je pense que SDL2 fonctionne maintenant. Probleme :

                    undefined reference to symbol 'SDL_WM_SetIcon'
                    

                    Il ne reconnait pas cette fonction

                    EDIT : je rajoute ici ma ligne de compliation :

                    gd main.c page_accueil.c -lSDL2main -lSDL2 -lSDL_image
                    

                    Sachant que pour image si je met SDL2 ca ne compile pas

                    -
                    Edité par Moshé Frydmann 20 janvier 2021 à 22:00:58

                    • Partager sur Facebook
                    • Partager sur Twitter
                      20 janvier 2021 à 22:07:46

                      Essaie plutôt cette fonction : SDL_SetWindowIcon
                      • Partager sur Facebook
                      • Partager sur Twitter
                        21 janvier 2021 à 7:10:57

                        Effectivement le changement fonctionne mais j'ai des soucis avec les autres fonctions comme set video, set caption. Aurais tu un site qui regroupe les nouvelles fonctions de la SDL 2 ?

                        J'ai l'impression que toutes les fonctions ont changées et du coup le tuto est obsolète...

                        -
                        Edité par Moshé Frydmann 21 janvier 2021 à 7:17:45

                        • Partager sur Facebook
                        • Partager sur Twitter
                          21 janvier 2021 à 7:21:48

                          Bonjour,

                          Shémo a écrit:

                          J'ai l'impression que toutes les fonctions ont changées et du coup le tuto est obsolète...

                          -
                          Edité par Shémo il y a moins de 30s


                          edgarjacobs a écrit:

                          Hello,

                          Oublie sdl 1.x, obsolète. Passe à la 2.x

                          -
                          Edité par edgarjacobs il y a environ 13 heures


                           

                          Sinon pour avoir la doc sdl, mis à part une recherche google bien évidemment, c'est toujours une bonne idée de voir le site de ladite bibliothèque →http://wiki.libsdl.org/FrontPage 

                          • Partager sur Facebook
                          • Partager sur Twitter
                            21 janvier 2021 à 8:07:40

                            Yes j'ai regardé un peu mais j'ai l'impression que y a pas mal de différences. Ca décourage à poursuivre cette bibliothèque surtout qu'en réalité je pense que pour du C c'est pas forcément nécessaire.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              21 janvier 2021 à 9:10:59

                              On ne fait jamais du C juste pour faire du C, sauf si on est dans un cursus qui le demande.

                              On ne peut, àmha, apprendre un langage que si on a une base en algo. On ne résout pas un problème en C (ou en Python ou en Typescript ou en ...), on résout un problème indépendamment d'un langage particulier puis seulement ensuite on implémente la solution dans en utilisant un langage (ou plusieurs d'ailleurs) dans un environnement.

                              C'est là tout l'intérêt des structure de données abstraites. Tu dois créer un moteur de jeu genre pacman qui se joue sur un petit plateau → tu vas certainement avoir à implémenter une recherche de plus court chemin avec une recherche en largeur d'abord ; le jeu est real time avec une grande map → tu vas certainement t'orienter plus vers un algo type A*. Mais dans les deux cas tu vas ptêt avoir à gérer des priorités, du coup avoir besoin d'une deque que tu implémenteras soit classiquement suivant le langage ou grâce à un arbre min-max heap …

                              Alors évidemment tout n'est pas aussi manichéen que ça. Dans un projet tu sais quel langage sera utilisé, donc tu fais aussi des choix en fonction de la faisabilité dans ce langage. Mais comment connaître la facilité d'implémentation si tu ne l'as jamais implémenté ?

                              Apprendre un langage en n'utilisant que des bibliothèques qui font le boulot intéressant c'est pas forcément l'idéal.

                              Bon j'ai l'impression de faire mon 👴 en ressassant qu'il faut de bonnes bases en algo … mais on dit que si tu ne disposes que d'un marteau tous tes problèmes ont une forme de clou … étoffe ton établi et tout sera plus simple.

                              • Partager sur Facebook
                              • Partager sur Twitter
                                21 janvier 2021 à 10:35:12

                                Salut,

                                Tu peux aussi suvre un autre tutoriel sur la SDL 2. Tu en trouveras sur Zeste de Savoir ou sur Developpez par exemple.

                                -
                                Edité par yo@n97one 21 janvier 2021 à 10:37:59

                                • Partager sur Facebook
                                • Partager sur Twitter
                                Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                                  21 janvier 2021 à 10:53:16

                                  Merci pour vos retours.

                                  Oui effectivement je fais du C pour me donner une base de compréhension (algo, gestion de mémoire même si j'en aurai pas besoin après avec d'autres languages), etc... J'ai surtout commencé la SDL pour le fun.

                                  Je pense, et dites moi si j'ai tord, que le C est une bonne école pour apprendre à programmer. On est face à pas mal de problèmes qui nous poussent à réfléchir. Tu as raison WhiteCrow, l'algorithmie est indépendante de tous language. d'ailleurs j'ai entendu parler d'un livre (ou d'un site je sais plus) qui regroupe pas mal d'algorithmes courants/existants en programmation. A mon sens le coeur du métier est là.

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    21 janvier 2021 à 11:56:37

                                    Je dirais au contraire que le C est assez bof pour apprendre à programmer (en fait il est surtout enseigné comme premier langage pour des raisons historiques).

                                    • Un programme faux peut tout à fait compiler et avoir l'air de fonctionner.
                                    • Il fait se concentrer sur des détails chiants et pas importants, ce qui fait qu'on ne peut pas se concentrer sur de l'algo par exemple.
                                    • Toujours lié au point précédent, on aimerait bien des structures de bases (au moins des chaînes de caractères et des listes potables) qui permettraient de travailler un peu (quitte à voir plus tard comment on peut les implémenter et tout). En fait, on compare à la bibliothèque standard d'autres langages et on sent un gros gouffre.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                                      21 janvier 2021 à 12:14:45

                                      Shémo a écrit:

                                      Tu as raison WhiteCrow, l'algorithmie est indépendante de tous language. d'ailleurs j'ai entendu parler d'un livre (ou d'un site je sais plus) qui regroupe pas mal d'algorithmes courants/existants en programmation. A mon sens le coeur du métier est là.

                                      Des livres il y en a des tonnes, tout comme des sites … Je t'ai même déjà donné 2 ou 3 références il me semble.

                                      Shémo a écrit:

                                      Oui effectivement je fais du C pour me donner une base de compréhension (algo, gestion de mémoire même si j'en aurai pas besoin après avec d'autres languages), etc... J'ai surtout commencé la SDL pour le fun.

                                      Bah il faut bien commencer par quelque chose … et au final, savoir s'interfacer avec une bibliothèque externe fait partie de compétences à avoir.

                                      En passant, ce n'est pas tant que tu n'as pas besoin de savoir comment la mémoire est gérée dans d'autres environnements de programmation, c'est juste qu'en C tu es «proche du matériel» mais plus justement de l'OS et que du coup tu as besoin d'être très rigoureux sur de nombreux points. C'est ce que ya@n97one voulait dire par : «Il fait se concentrer sur des détails chiants et pas importants, ce qui fait qu'on ne peut pas se concentrer sur de l'algo par exemple.». rigueur qui fait forcément défaut aux débutants et qu'il est parfois difficile d'acquérir.

                                      yo@n97one a écrit:

                                      • Toujours lié au point précédent, on aimerait bien des structures de bases (au moins des chaînes de caractères et des listes potables) qui permettraient de travailler un peu (quitte à voir plus tard comment on peut les implémenter et tout). En fait, on compare à la bibliothèque standard d'autres langages et on sent un gros gouffre.

                                       Bon, il existe quelques bibliothèques qui essayent de pallier ce problème, comme APR d'Apache, ou la GLib.





                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        21 janvier 2021 à 12:33:06

                                        Oui WhiteCrow tu m'as donné 2 référence, d'ailleurs une que j'ai commencé à regarder. Intéressant.
                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        PB Mario sodokan - écran noir

                                        × 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