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 ] ;  
} ;