Dans tout ce qui suivra la méthode utilisée sera toujours la même :
1) Lancez CodeBlocks. Dans la fenêtre qui s'ouvre, cliquez sur "Create a new project" :
2) Choisir "Empty project". Cliquez Next dans la fenêtre suivante. C'est juste une information.
3) Donner un nom à votre projet dans le champ "Project title". J'ai choisi ici "SDLprojet1".
4) Dans la fenêtre suivante, ne touchez à rien. Cliquez juste sur le bouton "Finish".
5) Attention à ne pas oublier ce qui va suivre à chaque construction d'un nouveau projet.
Il m'est arrivé accidentellement d'omettre cette étape et de ne plus comprendre
pourquoi les projets précédents fonctionnaient, et pas les suivants !
Faites un clic droit sur le nom de votre projet pour ouvrir un menu contextuel dans lequel
vous choisirez "Build options...".
6) Dans la fenêtre qui s'ouvre, cliquez sur le nom de votre projet afin que les modifications
affectent simultanément "Debug" et "Release".
Sélectionnez l'onglet "Linker settings". Le bouton "add" en bas de la fenêtre permet l'ouverture
d'une boite de dialogue contenant un champ de saisie "File:".
Entrez successivement et dans cet ordre :
libmingw32, libSDL2main, et libSDL2.
Voilà c'est terminé pour la configuration des fichiers nécessaires au bon fonctionnement de
notre projet. Passons maintenant au plus intéressant, la programmation.
Cliquez dans la barre de menu sur File, New, et Empty file, afin d'ouvrir une page vierge dans
laquelle nous écrirons notre premier code.
répondez "Oui" à la demande d'inclure ce nouveau fichier dans le projet.
Donnez ensuite le nom "main.cpp" à ce fichier pour l'enregistrer.
Dans la fenêtre qui s'ouvre aussitôt, laissez les cases "Debug" et "Release" cochées
et cliquez sur OK.
C'est parti on peut enfin commencer à écrire.
#include <iostream>
#include <SDL.h>
using namespace std;
int main(int
argc,
char* argv[])
{
cout <<
"Une application SDL" <<
endl;
return
EXIT_SUCCESS;
}
Notez bien que c'est SDL.h et non SDL2.h qu'il faut écrire ici. Il n'y a rien d'autre
à ajouter.
Ce programme ne fait rien de particulier. Il ouvre juste une fenêtre comme celle que nous
avions jusqu'à présent en programmant en C++.
Toutefois il permet de tester la bonne configuration de CodeBlocks puisqu'il va chercher à ouvrir
le fichier d'en-tête "SDL.h".
Si tout fonctionne, c'est que vous avez bien travaillé.
Passons maintenant aux choses sérieuses avec l'ouverture d'une fenêtre graphique.
La première étape consiste à créer un pointeur qui servira à manipuler la future fenêtre.
Pour l'instant nous laissons la valeur de ce pointeur à zéro.
SDL_Window *pFenetre = 0;
Ensuite il est obligatoire d'initialiser la SDL, ce qui se fait avec l'instruction :
SDL_Init(SDL_INIT_VIDEO);
L'argument qui est transmis, permet d'initialiser à la fois, ce qui concerne l'affichage
graphique, mais aussi la détection des événements (clavier, souris, ...).
Il existe d'autres codes que nous verrons plus tard.
Sachez que le fait d'initialiser SDL vous oblige à la fin du programme, à libérer
la mémoire en utilisant l'instruction :
SDL_Quit();
C'est ici que nous créons la fenêtre, et que le pointeur de cette fenêtre est initialisé.
pFenetre =
SDL_CreateWindow(
"Fenetre avec SDL",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED, 600,
400, SDL_WINDOW_SHOWN);
Les arguments correspondent à une fenêtre qui sera centrée verticalement et horizontalement,
qui fera 600 pixels de large, 400 pixels de haut. Le dernier argument précise que cette fenêtre
sera visible.
Si nous lançons maintenant le programme, la fenêtre se crée, s'ouvre et se referme
aussitôt. Pour éviter de trop compliquer le programme pour l'instant, nous allons juste
incorporer une temporisation de quelques secondes afin de pouvoir admirer notre oeuvre.
Cette temporisation est réalisée par la commande :
SDL_Delay (4000);
Le temps est exprimé ici en millisecondes. La fenêtre existera donc pendant 4 secondes.
Pour quitter proprement le programme, il nous faut détruire le pointeur de
notre fenêtre. C'est le rôle de l'instruction ci-dessous qui doit être placée
avant SDL_Quit().
SDL_DestroyWindow(pFenetre);
#include <iostream>
#include <SDL.h>
using namespace std;
int main(int
argc,
char* argv[])
{
cout <<
"Une application SDL" <<
endl;
SDL_Window *pFenetre;
SDL_Init (SDL_INIT_VIDEO);
pFenetre =
SDL_CreateWindow(
"Fenetre avec SDL",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED, 600,
400, SDL_WINDOW_SHOWN);
SDL_Delay (4000);
SDL_DestroyWindow(pFenetre);
SDL_Quit ();
return
EXIT_SUCCESS;
}