Premier programme avec la bibliothèque SDL
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.
Quelques lien intéressant :
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
Il faut simplement mettre un macro signifiant que vous l'incluez dans le fichier .c:
#include <SDL2/SDL.h>
vous pouvez aussi utiliser
#include "SDL.h"
Notre premier programme
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 :
- 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 (je déconseille de mettre > 10 car inutile) } 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; }
Avec ce code vous devriez comprendre 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)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 :
Si l'Event est de type button alors vours pouvez avoir :
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 -Wall main.c `sdl2-config --cflags --libs`
Executez !
Et voilà ! votre exécutable prêt à être exécuté via
./prog
Notre second programme
Ici on va écrire dans la fenêtre
Inclure une librairie annexe
Ça va être un peu spécial puisque nous aurons besoin de sdl2-ttf.
On doit bien évidemment inclure SDL_tff.h
pour utiliser les fonctions de cette librairie.
#include "SDL_ttf.h"
Codons en C !
ici un lien vers un repo où il y a le code
Compilez !
Nous utilisons SDL2 et SDL2_tff donc il faut faire :
gcc -o window window.c -Wall `sdl2-config --cflags --libs` -lSDL2_ttf