Creation projet SDL#1

This commit is contained in:
xdrm-brackets 2016-03-10 12:06:45 +01:00
parent 5bf6fc4e74
commit 6901293e29
10 changed files with 298 additions and 0 deletions

BIN
SDL#1/exe Executable file

Binary file not shown.

48
SDL#1/main.cpp Normal file
View File

@ -0,0 +1,48 @@
#include "main.h"
// On cree un sdl-toplevel statique
static sdltl *mgr;
int main(int argc, char* argv[]) {
/* [0] Initialisation de SDL
=========================================================*/
mgr = new sdltl("Ma fenetre SDL", WIN_WIDTH, WIN_HEIGHT);
/* [1] Creation de la fenetre
=========================================================*/
if( !mgr->status() )
cout << "Erreur: " << SDL_GetError() << endl;
/* [3] On definit le background color
=========================================================*/
// mgr->setBackground(255, 0, 255);
mgr->setBackground(255, 0, 0);
bool imageLoaded = mgr->setImage( "src/1.bmp" );
mgr->update();
/* [n-1] Boucle infinie
=========================================================*/
// while(1){
mgr->waitEvent(SDL_QUIT, &eventHandler);
// }
// SDL_Delay(5000);
/* [n] Fin d'execution
=========================================================*/
delete mgr;
return 0;
}
void eventHandler(SDL_Event *e){
cout << "Ferme" << endl;
delete mgr;
}

27
SDL#1/main.h Normal file
View File

@ -0,0 +1,27 @@
#ifndef DEF_MAIN_H
#define DEF_MAIN_H
/* [LIB] Internes
=========================================================*/
#include <iostream>
/* [LIB] Externes
=========================================================*/
#include "sdltl.h" // gestion de la fenetre et SDL
#include "sprite.h" // gestion des sprites
/* [NS] Namespace
=========================================================*/
using namespace std;
/* [CONST] Constantes et enumerations
=========================================================*/
#define WIN_WIDTH 600
#define WIN_HEIGHT 400
/* [FONCTIONS] Fonctions du corps
=========================================================*/
void eventHandler(SDL_Event *e);
#endif

BIN
SDL#1/main.o Normal file

Binary file not shown.

41
SDL#1/makefile Normal file
View File

@ -0,0 +1,41 @@
.PHONY: init, clean, mrproper
CC=g++
FLAGS=`pkg-config sdl2 --cflags --libs`
# INIT > STRUCTURE DE FICHIERS POUR LES EXECUTABLES
init: clean
mkdir dep.o
# EXECUTABLE > DEPENDANCES DE L'EXECUTABLE
all: init main.o clean
rm -r dep.o
$(CC) main.o -o exe $(FLAGS)
# AMORCE > PROGRAMME PRINCIPAL
main.o: main.cpp
$(CC) -c $< -o main.o $(FLAGS)
# RESET > SUPPRESSION DES FICHIERS
clean:
touch init.o
rm -r *.o
# RESET FOR REBUILD > SUPPRESSION DE L'EXECUTABLE
mrproper:
rm exe

103
SDL#1/sdltl.cpp Normal file
View File

@ -0,0 +1,103 @@
/* [CONSTRUCTOR] Constructeur de la classe
=========================================================*/
sdltl::sdltl(const char *t, int w, int h){
SDL_Init( SDL_INIT_EVERYTHING );
_window = NULL;
_screen = NULL;
// Creation de la fenetre
_window = SDL_CreateWindow(
t,
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
w,
h,
SDL_WINDOW_SHOWN
);
// Gestion erreur
if( _window == NULL )
_status = false;
// On recupere la surface
_screen = SDL_GetWindowSurface( _window );
// On retourne que tout s'est bien passe
_status = true;
}
/* [DESTROYER] Destructeur de la classe
=========================================================*/
sdltl::~sdltl(){
SDL_DestroyWindow( _window );
SDL_Quit();
}
/* [STATUS] Retourne le status
=========================================================*/
bool sdltl::status(){ return _status; }
/* [WINDOW] Retourne la fenetre
=========================================================*/
SDL_Window* sdltl::window(){ return _window; }
/* [SCREEN] Retourne la fenetre
=========================================================*/
SDL_Surface* sdltl::screen(){ return _screen; }
/* [SETBACKGROUND] Modifie la couleur de fond
=========================================================*/
void sdltl::setBackground(int r, int g, int b){
Uint32 color = SDL_MapRGB( _screen->format, r, g, b );
SDL_FillRect( _screen, NULL, color );
}
/* [SETIMAGE] Met une image en fond
=========================================================*/
bool sdltl::setImage(const char *url){
SDL_Surface *image = NULL;
image = SDL_LoadBMP( url );
// Si erreur de chargement image
if( image == NULL )
return false;
SDL_Rect dimensions;
dimensions.x = 0;
dimensions.y = 0;
SDL_GetWindowSize(_window, &dimensions.w, &dimensions.h);
SDL_BlitSurface( image, NULL, _screen, &dimensions);
// On libere la surface pour l'image
SDL_FreeSurface(image);
image = NULL;
return true;
}
/* [UPDATE] Mise a jour du rendu
=========================================================*/
void sdltl::update(){
SDL_UpdateWindowSurface( _window );
}
/* [WAITEVENT] Attends un evenement pour executer
=========================================================*/
void sdltl::waitEvent(SDL_EventType t, void(*handler)(SDL_Event*)){
SDL_Event event;
// On attends un evenement
while( SDL_PollEvent(&event) ){
// quand evenement, si type = t
if( event.type == t )
(*handler)(&event);
}
}

45
SDL#1/sdltl.h Normal file
View File

@ -0,0 +1,45 @@
#ifndef DEF_SDLTL_H
#define DEF_SDLTL_H
/* [LIBS] Internes
=========================================================*/
#include "SDL.h"
/* [LIBS] Externes
=========================================================*/
/* [NS] Namespaces
=========================================================*/
using namespace std;
class sdltl{
public:
sdltl(const char *t, int w, int h);
~sdltl();
SDL_Window *window();
SDL_Surface *screen();
bool status();
void setBackground(int r, int g, int b);
bool setImage(const char *url);
void waitEvent(SDL_EventType t, void(*handler)(SDL_Event*) );
void update();
private:
bool _status;
SDL_Window *_window;
SDL_Surface *_screen;
};
/* [BODY] Inclusion du corps
=========================================================*/
#include "sdltl.cpp"
#endif

34
SDL#1/sprite.h Normal file
View File

@ -0,0 +1,34 @@
#ifndef DEF_SPRITE_H
#define DEF_SPRITE_H
/* [LIBS] Internes
=========================================================*/
#include "SDL.h"
/* [LIBS] Externes
=========================================================*/
/* [NS] Namespaces
=========================================================*/
using namespace std;
class Sprite{
public:
Sprite();
~Sprite();
private:
};
/* [BODY] Inclusion du corps
=========================================================*/
// #include "sprite.cpp"
#endif

BIN
SDL#1/src/01.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 MiB

BIN
SDL#1/src/1.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 KiB