Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

utilisateurs:amiralgaby:comment_s_adapter_a_la_sdl [Le 13/02/2021, 13:40] (Version actuelle)
amiralgaby créée
Ligne 1: Ligne 1:
 +====== Comment s'​adapter à la bibliothèque SDL ======
 +<​note>​Note personnelle à moi-même : http://​www.libsdl.org/​languages.php</​note>​
 +
 +Vous souhaitez utiliser la fameuse bibliothèque [[:sdl]] et elle ne vous paraît pas très claire d'​utilisation ?
 +
 +Parfait ^_^ cette page est la pour vous permettre **de vous adapter** à la SDL.
 +
 +<​note>​Cette page n'est pas là pour réaliser un wiki de la SDL (d'​ailleurs [[https://​wiki.libsdl.org/​FrontPage|le wiki est officiel]] est dispo **en anglais**)</​note>​
 +
 +Quelques lien intéressant :
 +  * **(en)**[[http://​www.sdltutorials.com/​tutorials|Quelques tutoriels des différentes bibliothèques]]
 +  * **(en)**[[https://​wiki.libsdl.org/​APIByCategory|Les fonctions rangées par Catégorie]]
 +  * **(en)**[[https://​wiki.libsdl.org/​SDL_Keycode|Les représentations des touches lorsqu'​elle sont pressées]]
 +
 +===== Inclure la bibliothèque dans vos projets pour l'​utiliser ? =====
 +Partons du principe que vous l'avez installée via un gestionnaire de paquet, c'est toujours plus simple sous GNU/Linux 8-)
 +
 +Il faut simplement mettre un macro signifiant que vous l'​incluez dans le fichier .c:
 +<code c>#​include <​SDL2/​SDL.h></​code>​
 +vous pouvez aussi utiliser
 +<code c>#​include "​SDL.h"</​code>​
 +
 +===== Et maintenons codons en C ! =====
 +C'​était tout ? oui ! pour le moment :-| ça va se corser, c'est ça qui motive disons...
 +
 +Allez un petit code :
 +<file - main.c>
 +#include <​SDL2/​SDL.h>​
 +
 +int main(int argc, char *argv[]) {
 +    SDL_bool done;
 +    SDL_Window *window;
 +    SDL_Event event; ​                       // On declare la structure d'​event
 +
 +    SDL_Init(SDL_INIT_VIDEO); ​              // Initialisation de la SDL2
 +
 +    window = SDL_CreateWindow( ​ // Créer la fenêtre
 +        "SDL première fenêtre pour comprendre",​
 +        SDL_WINDOWPOS_CENTERED,​
 +        SDL_WINDOWPOS_CENTERED,​
 +        640,
 +        480,
 +        SDL_WINDOW_OPENGL
 +    );
 +
 +    // Check si la fenêtre à pu être crée
 +    if (window == NULL) {
 +        SDL_Log("​La fenêtre n'a pas pu être créer %s", SDL_GetError());​
 +        SDL_Quit();
 +        return 1;
 +    }
 +
 +    done = SDL_FALSE;
 +    while (!done) {                         // Boucle du programme
 +        while (!done && SDL_PollEvent(&​event)) {
 +            switch (event.type) {
 +                case (SDL_QUIT): {          // Dans le cas de fermeture de fenêtre
 +                    done = SDL_TRUE;
 +                    break;
 +                }
 +
 +               case (SDL_KEYDOWN):​ {
 +               ​ SDL_Log("​L'​utilisateur vient juste de presser la touche %s", SDL_GetKeyName(event.key.keysym.sym));​
 +               }
 +            }
 +        }
 +        SDL_Delay(1);​ // Repose votre OS durant quelques millisecondes (très déconseillé de mettre > 100)
 +        // Votre OS ne repose très bien avec 1 milliseconde pourquoi mettre plus ?
 +    }
 +
 +    SDL_DestroyWindow(window); ​       // On ferme la fenêtre visuellement et on la détruit en mémoire
 +
 +    SDL_Quit(); ​                      // Nettoyage des allocations mémoire
 +    return 0;
 +}
 +</​file>​
 +
 +Avec ce code vous devriez comprend comment faire une fenêtre et comment se passe les événements.
 +Pour être plus clair je vais vous expliquer le concept :
 +Chaque fois que vous passer dans SDL_PollEvent vous prenez l'​event un tête de file des événements et vous allez réalisé des algorithme selon son type, sa valeur.
 +
 +**(en)**[[https://​wiki.libsdl.org/​SDL_Event|la liste des events sur le wiki officiel]] ​
 +
 +Un Event peut avoir comme type :
 +  * __key__ pour les touches de clavier
 +  * __motion__ pour les mouvements de souris
 +  * __button__ pour les click de souris
 +  * (plein d'​autre voir la doc au-dessus)
 +
 +Si l'​Event est de type __key__ alors vous pouvez avoir :
 +  * sont type : appuyé SDL_KEYDOWN ou relâché SDL_KEYUP
 +  * sont keysym : c'est à dire sa valeur
 +
 +Si l'​Event est de type __mouse__ alors vous pouvez avoir :
 +  * FIXME
 +
 +Si l'​Event est de type __button__ alors vours pouvez avoir :
 +  * FIXME
 +
 +Il y a beaucoup d'​autre type d'​Event voir la doc au-dessus
 +====== Compilez ! =====
 +Nous utilisons SDL2 donc il faut faire :
 +  gcc -o prog main.c `sdl2-config --cflags --libs`
 +
 +Et voilà ! votre exécutable prêt à être exécuté via
 +  ./prog
  
  • utilisateurs/amiralgaby/comment_s_adapter_a_la_sdl.txt
  • Dernière modification: Le 13/02/2021, 13:40
  • par amiralgaby