Moteur 2d avec sdl (poo)

Soyez le premier à donner votre avis sur cette source.

Vue 7 932 fois - Téléchargée 916 fois

Description

Bonjour à tous !
Voici une nouvelle version de mon moteur 2D, toujours en utilisant la librairie SDL mais cette fois en programmant avec des classes. Il suffit de déziper tous les fichiers dans un même dossier et de lancer l'exécutable...

Je vous explique un peu le fonctionnement : la classe Map permet de créer le terrain, c'est-à-dire le sol, et les décors, comme les arbres, c'est-à-dire ce qu'on ne peut pas (normalement, vous allez comprendre pourquoi je dis ça !) traverser. Chacun de ces objets s'affiche tout seul par un simple appel de fonction. Le personnage est un objet à part, indépendant si on peut dire ça, et n'est pas créé ni affiché ni déplacé par le biais de la classe Map.

J'attends vos commentaires et surtout votre aide sur la gestion des personnages. Dans un jeu chaque perso est trop unique pour être créé à l'intérieur de ma classe Map (c'est pour ça que je les qualifie d'indépendants) mais je dois absolument accéder à certaines variables qui sont privées dans cette même classe, utiles pour gérer par exemple les collisions (qui, vous le remarquerez vous-même, sont inexistantes dans mon moteur... d'où le "normalement" de tout à l'heure ;))...
Je vous donne juste un aperçu des classes que j'ai créé, ci-dessous...

Source / Exemple :


class Terrain
{
  public:
    Terrain(int,int,char*);
    void Dessiner(SDL_Surface*,int,int);
  private:
    const static int W_TILE = 32;
    const static int H_TILE = 40;
    int XTerrain,YTerrain;
    SDL_Surface* SurfaceTerrain;
    SDL_Rect RectTerrain;
};

class Decor
{
  public:
    Decor(int,int,char*);
    void Dessiner(SDL_Surface*,int,int);
  private:
    const static int W_TILE = 32;
    const static int H_TILE = 40;
    int XDecor,YDecor;
    SDL_Surface* SurfaceDecor;
    SDL_Rect RectDecor;
};

class Perso
{
  public:
    Perso(int,int,char*);
    void DeplacerHaut(char*);
    void DeplacerDroite(char*);
    void DeplacerBas(char*);
    void DeplacerGauche(char*);
    void Dessiner(SDL_Surface*,int,int);
  private:
    const static int W_MAP = 40;
    const static int H_MAP = 24;
    const static int W_TILE = 32;
    const static int H_TILE = 40;
    int XPerso,YPerso;
    SDL_Surface* SurfacePerso;
    SDL_Rect RectPerso;
};

class Map
{
  public:
    Map(int,int);
    void AjouterTerrain(int,int,char*);
    void AjouterDecor(int,int,char*);
    void DeplacerCameraHaut();
    void DeplacerCameraDroite();
    void DeplacerCameraBas();
    void DeplacerCameraGauche();
    void Dessiner(SDL_Surface*);
    int XCam();
    int YCam();
  private:
    const static int W_MAP = 40;
    const static int H_MAP = 24;
    const static int W_ECRAN = 20;
    const static int H_ECRAN = 12;
    int XCamera, YCamera;
    Terrain* MapTerrain[W_MAP][H_MAP];
    Decor* MapDecor[W_MAP][H_MAP];
};

Conclusion :


J'explique vite fait les touches parce que c'est vraiment pas compliqué : flèches directionnelles pour faire bouger le perso et Echap pour quitter... voilà ;)

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
45
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
27 juin 2008

Moi je met 8/10 car depuis l'autre maquette que tu as up sur le site , je trouve que tu t'es amélioré et que tes classes sont ... bien :)
En revanche le 9/10 aurais été pour l'exe et le 10/10 pour un éditeur de niveau qui tienne la route ...
Pour la prochaine fois peut etre ...
Messages postés
37
Date d'inscription
mercredi 10 août 2005
Statut
Membre
Dernière intervention
31 octobre 2005

un exe quoi !
Messages postés
7
Date d'inscription
dimanche 27 mars 2005
Statut
Membre
Dernière intervention
3 mai 2005

Un petit .exe pour le tester ?
Messages postés
20
Date d'inscription
mercredi 14 mai 2003
Statut
Membre
Dernière intervention
5 juin 2006

salut a tous
est ce que qq peux compiler l'editeur de map svp?

le metre avec ces cources ca cerais genial. merci
Messages postés
4
Date d'inscription
lundi 29 novembre 2004
Statut
Membre
Dernière intervention
28 septembre 2005

m vous pouvez mettre le fichier exe s il vous plais
Afficher les 13 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (Tijee)