www.pudn.com > sxdl.zip > bomber.h


// BOMBER par Benamrouche
// abdel abdel_production@yahoo.fr
// abdel_production@multimania.com
// Utilise SxDL http://forum.games-creators.org/viewtopic_1167.htm

#include "sxdl.h"

//utilisé pour simuler des explosions
//principe : on en cree 60 en un meme point , puis ils prendront des directions aleatoires,
class CExplosion : public CEntity
{
public:
CExplosion ( CBasicSprite * _Sprite , int _x,int _y ) ;
virtual ~CExplosion ( void ) { } ;
virtual bool OnAnimate ( float ElapsedTime , float AbsoluteTime ) ;
private :
Vector3 InitialScale ;
} ;

//les mechants qui veulent attrapper notre hero
class CBadguy : public CEntity
{
public:
CBadguy ( CBasicSprite * _Sprite ,int _x,int _y ) ;
virtual ~CBadguy ( void ) { } ;
virtual bool OnAnimate ( float ElapsedTime , float AbsoluteTime ) ;
virtual void OnDying ( ) ;// en mourrant ils explosent
// une ia extrenment simple ! les ennemis sont betements attirés par le hero...
void ia();
private:
int x; // coordonnée du perso
int y; // le perso se trouve en x,y
int x0; // et va se diriger vers x0,y0
int y0;
int spriteid; //id du sprite utilisé
int AnimationIndex ; //pour l'animation
CBasicSprite * Sprite ; //sprite utilisé, car lors de l animation il changera
} ;

//notre hero (idem badguy), il se deplace avec les fleches directionnelles
class CHero : public CEntity
{
public:
CHero ( CBasicSprite * _Sprite ) ;
virtual ~CHero ( void ) { } ;
virtual bool OnAnimate ( float ElapsedTime , float AbsoluteTime ) ;
virtual void OnUserInput ( CInput::VirtualKeys VirtualKey , float ElapsedTime , float Value ) ;
inline void OnUpDown ( float ElapsedTime , float Value ) ;
inline void OnLeftRight ( float ElapsedTime , float Value ) ;

int x; // le hero se trouve en x,y
int y;

private:
int x0; // et va se diriger vers x0,y0
int y0;
int spriteid; //id du sprite utilisé
int AnimationIndex ; //pour l'animation
CBasicSprite * Sprite ; //sprite utilisé, car lors de l animation il changera
} ;

class CBloc : public CEntity // les blocs sont les sprites du decor (mur, sol)
{
public:
CBloc ( CBasicSprite * _Sprite ,int _x,int _y ) ;
virtual ~CBloc ( void ) { } ;
virtual bool OnAnimate ( float ElapsedTime , float AbsoluteTime ) ;
private:
int x;
int y;
} ;

class Game : public SxDL
{
private:
enum { MapSize = 40 } ;
static int InitialMap [ MapSize * MapSize ] ;
static int Map [ MapSize * MapSize ] ;

public:
//des accesseurs
inline int map ( int _x,int _y) { return Map [_x+_y * MapSize ] ; }
inline void map ( int _x,int _y, int value ) { Map[_x+_y * MapSize ] = value ; }
inline bool map ( int _x,int _y, int valcond, int value )
{
if ( map(_x,_y) == valcond )
{
map(_x,_y, value );
return true ;
}
else
return false ;
}

void GameLose();
void GameWin();

Game ( void ) { Hero = NULL ; } ;
virtual ~Game ( void ) { } ;
virtual void OnStartup ( void ) ;
virtual void OnCreateGame ( void ) ;
virtual void OnEndAnimate ( float ElapsedTime , float AbsoluteTime ) ;
virtual void OnNewGame ( void ) ;
virtual void OnTimer ( int TimerId ) ;
// Timers Ids
enum
{
Start = 1,
ChangeSprite = 2, // les personnages se deplacent
CreateEnemyTimer=3, // Nouvelles vagues d enemies
ExplosionTimer=4 // animation de l explosion
} ;

// Les ressources utilisées par le jeu
enum ResourceIds
{
Null = 0 ,
RWall = 30 , //un mur
REmpty = 31 , // normalement y devait avoir le sol...1
RWalld = 32 ,// un mur qui qui peut etre detruit (a faire)
RDoor = 33,// la porte de sortie ( a faire)
RWhole = 34, // un trou ou sort les villains
RExplosion = 35,// explosion
RHero = 40 ,// les personnages (les enemies sont faites a partir de cette texture...)

// Music
Mp3Music = 21 , // bah normalemnt on doit jouer du mp3 , mais sa marche po
} ;
// families
enum { Heroes = 0, Badguys , Walls } ;

CHero * Hero ;
bool ChangeSprites ; //changement des sprites des personnages
bool ChangeSpriteExplosion;//changement des sprites des enemis
static Resource Resources [ ] ;
//heuu... ouais 60 c'est beacoup, touts les sprites y sont reunis
// pour faire plus propre il aurrait peut etre été préferable de les séparer !
static CBasicSprite * Sprites [ 60 ] ;
} ;