SOMMAIRE


C++
Introduction
Scripts(54)
Exercices(3)
Liens
Livres
Forums


OpenGL
Introduction
Scripts(8)
Liens
Livres
Forums


IA
Script(6)
Forums


Jeux vidéo
Articles(1)
Forums


SDL
Introduction
Scripts(1)
Forums


Articles
Informatiques
TPE JPEG
Forums
Moteur de jeux 3D


PHP
Leçons
Scripts(11)
Exercices
Liens
Livres
Forums


JavaScript
Leçons
Scripts(2)
Exercices
Liens
Livres
Forums


HTML
Leçons
Scripts(2)
Exercices
Liens
Livres
Forums


Référencement
Leçons
Exercices
Liens
Livres
Forums


Quick Basic
Introduction
Scripts(14)
Exercices
Liens
Forums


Partenaires
Moteurprog.com
Mandragor.org
laltruiste.com
script-masters.com
Prografix
Zone DMC
Studios Tastalian
01php.com
Coder-studio.com
Melancolik.net
freddec.free.fr
InzeProg
Progmatique.fr
SMS
Covoiturage
en Europe

Cours de Yoga
en ligne



Autres liens
magazine - référencement






SDL, Turorial :


Turorial SDL pour débutants, premiers pas :

Tout d'abord, ce post s'adresse à des programmeurs C++, non débutants : qui connaissent les classes, construction/destruction d'objets et bien évidemment débutent avec la SDL.

Nous allons voir comment créer une classe qui permet de créer un programme et sa fenêtre surtout.

Elle sera composée :

            Citation :
            Les attributs :
            - SDL_Surface* screen
            - SDL_Surface* fond
            - D'autres champs si vous rajoutez des trucs :)

            Les méthodes :
            - Constructeur
            - Destructeur
            - redraw() qui sera une sorte "d'actualiser" pour la fenêtre
            - d'autres si vous le souhaitez...




Bon et si on commençait ?

Alors pour toute classe, il est standard de faire un fichier .h dans laquelle on déclare la classe, ses attributs et ses méthodes, et un .cpp ou on implémente les méthodes.

Alors pour tout .h, grâce à 3 lignes de code, un fichier inclue dans plusieurs fichiers n'est l'inclue qu'une seule fois car à la compilation,tout est inclue dans le fichier ou se trouve main(), et une multi-inclusion renverrait des erreurs.

Voici comment on procède :

Code:
#ifndef _FICHIER_H_
#define _FICHIER_H_
//le code du fichier...
#endif

si _FICHIER_H_ n'est pas défini alors
on définit _FICHIER_H_
// code du fichier
fin du si

Voila la "traduction" .

Ça nous donne donc pour notre classe fenêtre :



Code:
#ifndef _FENETRE_H_
#define _FENETRE_H_

class Fenetre {

};

#endif


Bon étant donné que notre classe est un peu vide, on va la remplir.

Mettons-y la déclaration de nos attributs et méthodes...
Les attributs seront déclarés privés pour des raisons de sécurité.

ça devient alors :


Code:
#ifndef _FENETRE_H_
#define _FENETRE_H_

#include // nous avons besoin de la SDL...

class Fenetre {

private:
SDL_Surface* screen;
SDL_Surface* fond;

public:
Fenetre();
Fenetre(char* image_fond);
~Fenetre();
void redraw();

};

#endif


Voila, notre fichier fenetre.h est "terminé" ,car vous pourrez toujours
rajouter de nouvelles méthodes ou attributs.

Occupons nous de l'implémentation de nos méthodes .

On attaque donc le fichier fenetre.cpp .
Pour pouvoir définir ce qui se trouve dans fenetre.h, on inclut fenetre.h, puis pour définir une fonction, on fait :



Code:
type_renvoyé nom_de_la_classe::nom_de_la_fonction(arguments) {
// code de la fonction
}


Voici donc le fichier fenetre.cpp avec des définitions possibles pour nos méthodes, avec quelques commentaires:



Code:
#include "fenetre.h"

Fenetre::Fenetre(int largeur=800,int hauteur=600,int nb_couleurs=16,char* titre="Fenetre SDL")
{
if(SDL_Init(SDL_INIT_VIDEO)<0)
        {
        cerr<<"Erreur dans l'initialisation de la librairie" << endl;
        }

screen=SDL_SetVideoMode(largeur,hauteur,nb_couleurs,SDL_HWSURFACE|SDL_DOUBLEBUF) ;

        if(screen==NULL)
        {
                cerr<<"Erreur dans l'initialisation des modes vidéos:" << SDL_GetError();
                SDL_Quit();
        }

        SDL_WM_SetCaption(titre,NULL);
        SDL_Flip(screen);
}

Fenetre::Fenetre(int largeur=800,int hauteur=600,int nb_couleurs=16,char* titre="Fenetre SDL",char* background)
{
if(SDL_Init(SDL_INIT_VIDEO)<0)
        {
                cerr<<"Erreur dans l'initialisation de la librairie" << endl;
        }

screen=SDL_SetVideoMode(largeur,hauteur,nb_couleurs,SDL_HWSURFACE|SDL_DOUBLEBUF) ;

        if(screen==NULL)
        {
                cerr<<"Erreur dans l'initialisation des modes vidéos:" << SDL_GetError();
                SDL_Quit();
        }

        SDL_WM_SetCaption(titre,NULL);
                fond = SDL_LoadBMP(background);
        SDL_BlitSurface(fond,NULL,screen,NULL);
        SDL_Flip(screen);
}

Fenetre::~Fenetre() {
        SDL_FreeSurface(fond);
        SDL_FreeSurface(screen);
        SDL_Quit();
}

void Fenetre::redraw() {
SDL_Flip(screen);
}



Voila, pour toute fonction SDL que vous n'avez pas comprise, veuillez aller faire un tour sur le site de la SDL, mais la pratique et la modification du code pourra vous aidez à mieux comprendre leur utilité.

Si c'est autre chose que vous n'avez pas compris, relisez un cours ou bien posez votre question.


Alp







Tout le contenu de ce site web est protégé par les lois internationales de droits d'auteurs . Webmaster : Fabien Menou