N.B.La version 1.2 SDL fournit des fonctions de tracés simples le paquet SDL_surface.h
Pour pouvoir compiler, le fichier SDL.dll doit se trouver avec le projet.
SDL_Init( SDL_INIT_VIDEO|SDL_INIT_TIMER) |
Essaye d'initialiser le mode vidéo et la gestion du temps.
|
atexit(SDL_Quit); |
s'assure de la bonne fermeture à la fin |
SDL_WM_SetCaption("Billard", NULL); |
Donne un nom à la fenêtre |
ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE|SDL_DOUBLEBUF); |
renvoie un pointeur SDL_Surface*.
autres paramètres N.B. semble être remplacée par SDL_SetWindowDisplayMode(SDL_Window* window,const SDL_DisplayMode* mode) Ce sera la surface que l'on pourra basculer à l'écran par SDL_Split |
image = SDL_CreateRGBSurface(SDL_HWSURFACE, hauteur, largeur, profondeur, 0, 0, 0, 0); |
Réserve en mémoire (vidéo) et renvoie un pointeur SDL_Surface*.
références |
SDL_Rect |
Type (structure) comprenant .x (abscisse du haut) .y (ordonnée du haut) .h (hauteur) et .w (largeur)
est utilisé pour définir un recangle dans un image. |
SDL_Surface |
Type (structure) destiné à recevoir une surface SDL.
Elle est généralement renvoyée par une fonction, sous forme de pointeur. Comprend des champs .h et .w (hauteur et largeur) tous les champs |
int SDL_FillRect(SDL_Surface* dst, const SDL_Rect* rect, Uint32 color) |
peint avec la couleur color la partie de la surface dst délimitée par rect
ou l'ensemble de la surface si NULL
Après peinture, rect contient la partie effectivement peinte (si le rectangle dépasse les bords). la couleur peut être fournie par la fonction SDL_MapRGB(ecran->format, 255,0,0) |
SDL_Surface* SDL_LoadBMP(const char* file) |
Charge l'image en mémoire et renvoie un pointeur sur elle.
Il faut d'abord déclarer une variable pointeur SDL_Surface* pour l'affecter. Ne pas oublier de libérer la mémoire en fin d'utilisation par SDL_FreeSurface |
Uint32 couleurTransparence= SDL_MapRGB(boule->format, 255, 255, 255); SDL_SetColorKey(boule, SDL_SRCCOLORKEY, couleurTransparence); |
Définit couleur de transparence et l'affecte à la SDL_Surface* boule |
SDL_BlitSurface(SDL_Surface* src, SDL_Rect* srcrect, SDL_Surface* dst, SDL_Rect* dstrect) ) |
Colle la partie de src spécifiée srcrect (colle tout si NULL) sur dst
à la position spécifiée par les champs .x et .y de dstrect.
La partie effectivement collée sera renvoyée dans dstrect N.B.Permet aussi de mettre en tampon une partie de l'écran |
SDL_Flip(SDL_Surface* ecran); |
BAscule sur l'affichage du tampon (buffer) |
Uint32 temps=SDL_GetTicks(); |
Donne le temps en miliseconde depuis l'initialisation par SDL_Init |
while(SDL_GetTicks() |
Attend 20 miliisecondes |
SDL_WaitEvent(&event); |
met le processus en pause en attendant un événement. (N'utilise plus de ressource du CPU) |
SDL_PollEvent(&event); |
teste s'il y a un événement (et le porocessus continue) |
SDL_Event event; |
le type recevant les différents événements. |
switch (event.type) {...} |
selon le .type différents champs sont accessibles directement ou par fonctions. |
case SDL_KEYDOWN // ou UP : SDLKey touche=event.key.keysym.sym; break; |
event.key contient une structure/type SDL_KeyboardEvent. Cete strucuture comprend les champs : event.key.keysym.unicode le code unicode du caractère. |
case SDL_MOUSEMOTION : |
On peut accèder à la position de la souris par SDL_GetMouseState(&x,&y);
ou par event.motion qui est une striucture SDL_MouseMotionEvent comprenant les champs : |
case SDL_MOUSEBUTTONDOWN // ou UP |
event.button contient alors une structure SDL_MouseButtonEvent comprenant les champs :
|
case SDL_QUIT |
si la fermetrure de fenêtre a été demandée. |