Creation projet SDL#1
This commit is contained in:
parent
5bf6fc4e74
commit
6901293e29
|
@ -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;
|
||||||
|
}
|
|
@ -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
|
Binary file not shown.
|
@ -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
|
|
@ -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);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -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
|
|
@ -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
|
Binary file not shown.
After Width: | Height: | Size: 8.5 MiB |
Binary file not shown.
After Width: | Height: | Size: 257 KiB |
Loading…
Reference in New Issue