Formations à l'informatique et à l'électronique

Auteur : SD
Créé le : 05-03-2019

Configuration d'un projet NetBeans pour utiliser la SDL

Logo API SDL Simple DirectMedia Layer

La SDL (Simple DirectMedia Layer) est une bibliothèque logicielle libre. Son API (Application Programming Interface) est utilisée pour créer des applications multimédias en deux dimensions pouvant comprendre du son comme les jeux vidéo, les démos graphiques, les émulateurs, etc. (Wikipédia)

Pour un premier projet, il faut préalablement installer la SDL.

Sommaire :

Installation de la SDL

Télécharger l'archive de la SDL et la dézipper dans "c:\MinGW". Vous devez obtenir l’arborescence ci-dessous :

Dossier installation SDL

Configuration d'un projet NetBeans

Faire un clic droit sur le projet et cliquer sur "Properties".

NetBeans Project Properties Propriétés Projet

Dans la sous-catégorie "Linker", sélectionner "All configurations" puis taper le chemin "c:\MinGW\sdl\lib" dans "Additional Library Directories", puis cliquer sur le bouton "..." de la ligne "Libraries".

NetBeans Project Properties Linker

Cliquer sur le bouton "Add Library...".

NetBeans Project Properties Linker Add Library

Sélectionner le fichier "libmingw32.a" du dossier "c:\MinGW\lib".

NetBeans Project Properties Linker Add Library libmingw32

Cliquer à nouveau sur le bouton "Add Library..." et sélectionner le fichier "libSDL2main.a" du dossier "c:\MinGW\sdl\lib".

NetBeans Project Properties Linker Add Library libSDL2main

Faire de même pour les fichiers "libSDL2.a" et "libSDL2.dll.a" du dossier "c:\MinGW\sdl\lib". Vous devez obtenir l'affichage ci-dessous. Cliquer sur "OK".

NetBeans Project Properties Linker Add Library libSDL2 libSDL2DLL

Dans la sous-catégorie "C Compiler", sélectionner "All configurations" puis taper le chemin "c:\MinGW\sdl\include" dans "Include directories", puis cliquer sur "OK".

NetBeans Project Properties Include directories

Enfin, pour terminer, copier le fichier "SDL2.dll" (à prendre dans le dossier "c:\MinGW\sdl\bin") dans le dossier où se trouve le .exe de vortre projet.

NetBeans SDL DLL

Test

Le code ci-dessous ouvre une fenêtre de 800x600 pixels avec un fond blanc, dessine un rectangle rouge de 320x240.

#include <stdio.h>
#include <stdlib.h>

#include <SDL.h>
#include <SDL_surface.h>

int main(int argc, char** argv) {
SDL_Window* pWindow = NULL;
SDL_Surface *screen = NULL;

/* Initialisation de la SDL */
if (SDL_Init(SDL_INIT_VIDEO) != 0 )
{
fprintf(stdout,"Échec de l'initialisation de la SDL (%s)n",SDL_GetError());
return -1;
}

/* Création de la fenêtre */
pWindow = SDL_CreateWindow("Ma fenêtre",
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
800,
600,
SDL_WINDOW_SHOWN);

if(pWindow) {
screen = SDL_GetWindowSurface(pWindow);
}
else {
fprintf(stderr,"Erreur de création de la fenêtre: %sn",SDL_GetError());
return -1;
}

/* On efface l'écran */
SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 255, 255, 255));

// Dessin d'un rectangle rouge
/* Declaring the surface. */
SDL_Surface *s;
/* Creating the surface. */
s = SDL_CreateRGBSurface(0, 320, 240, 32, 0, 0, 0, 0);
/* Filling the surface with red color. */
SDL_FillRect(s, NULL, SDL_MapRGB(s->format, 255, 0, 0));

SDL_Rect position;
position.x = 0;
position.y = 0;

SDL_BlitSurface(s, NULL, screen, &position);

// Mise à jour de l'affichage
SDL_UpdateWindowSurface(pWindow);

int continuer = 1; /* Notre booléen pour la boucle */
SDL_Event event; /* La variable contenant l'événement */

while (continuer) /* TANT QUE la variable ne vaut pas 0 */
{
SDL_WaitEvent(&event); /* On attend un événement qu'on récupère dans event */
switch(event.type) /* On teste le type d'événement */
{
case SDL_QUIT: /* Si c'est un événement QUITTER */
continuer = 0; /* On met le booléen à 0, donc la boucle va s'arrêter */
break;

case SDL_KEYDOWN: /* Si c'est un évènement clavier */
switch (event.key.keysym.sym)
{
case SDLK_ESCAPE: /* Appui sur la touche Echap, on arrête le programme */
continuer = 0;
break;

case SDLK_DOWN:
/* On efface l'écran */
SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 255, 255, 255));
position.x = 0;
position.y = position.y + 1;

// s contient toujours le rectangle rouge
// On peut donc le redessiner à une autre position
SDL_BlitSurface(s, NULL, screen, &position);

// Mise à jour de l'affichage
SDL_UpdateWindowSurface(pWindow);
break;
}
break;
}
}

SDL_Delay(1000); /* Attendre 1 seconde */

// Close and destroy the window
SDL_DestroyWindow(pWindow);

// Clean up
SDL_Quit();
return 0;
}

Référence

Documentation de la SDL : https://wiki.libsdl.org/FrontPage

Articles connexes


Vous avez apprécié cet article ? Partagez le !

Article connexe : Installer et configurer MinGW avec NetBeans