5.2.1 Écrire apptest.h

La structure du fichier apptest.h ne change pas de d'habitude :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ifndef APPTEST_H
#define APPTEST_H

#include "sdl_application.h"

class AppTest : public SDL_Application {
	public:
	
	protected:
	
	private:

};

#endif

Les fonctions publiques :

Le constructeur par défaut :

1
AppTest();

Rien de bien spectaculaire.

Ensuite on prend un ou tout les constructeurs qui nous arrange (vous pouvez même en créer un totalement différent de ceux proposer par SDL_Application) :

1
AppTest(unsigned int width, unsigned int height, const std::string & titre, const std::string & icon, const std::string & backgroundFile, const std::string & police = "", int taille = 0);

Le constructeur de copie :

1
AppTest(const AppTest & app);

Si vous avez mis le constructeur de copie de la classe SDL_Application en private vous n'êtes pas obligé de le réécrire.

Le destructeur :

1
virtual ~AppTest();

Une fois encore, rien de nouveau.

Une fonction pour passer l'image d'un vaisseau à faire afficher par la classe (on pourrait également l'initialiser dans la classe, cette méthode est aussi valable que celle que nous ferrons) :

1
void setVaisseau(const std::string & vaisseau);

Les fonctions protégées :

1
2
virtual void draw(SDL_Surface* ecran);
virtual void update(float dt);

Ici le virtual n'a pas d'importance, on le met pour se rappeler que ces fonctions ont été déclarées dans la classe parente.

Les fonctions privées :

1
void init();

Nous avons juste besoin d'une fonction pour initialiser les variables par défaut (ça évite les problèmes, par exemple un pointeur non NULL mais qui n'a pas été initialisé).

Les variables privées :

1
2
SDL_Rect pos;
SDL_Surface* vaisseau;

Nous avons besoin de la position du vaisseau et de son image (l'idéal aurait été de faire une classe Vaisseau, mais ici on essaye de faire simple).

C'est fini pour le .h (c'était quand même plus court que tout à l'heure).

En résumé voilà ce que l'on a écrit :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#ifndef APPTEST_H
#define APPTEST_H

#include "sdl_application.h"
#include "bibliotheque.h"

/**
	@brief class exemple qui montre succinctement la complexité d'un jeu qui est rendu moins embêtante grâce a certaine classe comme Bibliothèque
*/

class AppTest : public SDL_Application {
	public :
		AppTest();
		AppTest(unsigned int width, unsigned int height, const std::string & titre, const std::string & icon, const std::string & backgroundFile, const std::string & police = "", int taille = 0);
		virtual ~AppTest();
		void setVaisseau(const std::string & vaisseau);
		
	protected:
		virtual void draw(SDL_Surface* ecran);
		virtual void update(float dt);
		
	private:
		void init();
		///position du vaisseau
		SDL_Rect pos;
		///image du vaisseau
		SDL_Surface* vaisseau;
		///bibliothèque d'images
		Bibliotheque bibliotheque;
		///classe qui stocke une animation
		Sprite* sprite;
		///itérateur pour parcourir le sprite
		Sprite::iterator it;
		///attente en deux image du sprite
		float wait;
		///position de Tux
		SDL_Rect posTux;
};

#endif