Interactions avec le joueur
CHAPITRE 4
75
La signature du contrat s’écrit donc comme un héritage (voir le chapitre 3 à ce sujet) :
Classe : Interface
Cependant, à la différence de l’héritage, une classe peut implémenter plusieurs interfaces.
La syntaxe serait la suivante :
Classe : InterfaceA, InterfaceB
L’utilisation des classes se fait d’une manière tout à fait classique.
class Program
{
static void Main(string[] args)
{
Human human = new Human("Dylan", "Bob");
Console.WriteLine(human.Identification());
Machine machine = new Machine("B563RF2");
Console.WriteLine(machine.Identification());
Console.Read();
}
}
Comment utiliser les services
Les services ont été conçus pour récupérer, à partir de votre classe principale (celle qui
hérite de Game), un objet qui implémente une interface donnée. Leur avantage est donc de
faciliter l’utilisation des méthodes d’un objet sans avoir à le passer sans cesse en paramètre
et sans utiliser de variable statique.
La gestion des services se fait tout simplement par la propriété Services de la classe Game.
Elle correspond à un objet de type GameServiceContainer qui dispose des trois méthodes
AddService(), GetService() et RemoveService(). Les services sont en fait stockés dans un
objet Dictionary.
Vous allez maintenant créer votre premier service qui vous servira à gérer le clavier. Dans
la première partie de ce chapitre, nous avons présenté les deux possibilités qui existent
pour récupérer les entrées de l’utilisateur : à savoir utiliser directement l’objet Keyboard
ou alors passer par un objet KeyboardState. Or, dès que vous commencerez à travailler sur
un projet conséquent, vous vous rendrez compte que l’accès répété à l’objet Keyboard peut
être à l’origine de pertes de performances. En fait, vous pourriez n’y accéder qu’une fois
et mettre à disposition de tout le monde l’objet KeyboardState : cela correspond parfaitement
à la définition des services.
L’écriture du contrat se fait très rapidement : une fonction suffit pour savoir si une touche
est effectivement pressée.
interface IKeyboardService
{
bool IsKeyDown(Keys key);
}
=Labat FM.book Page 75 Vendredi, 19. juin 2009 4:01 16
Précédent

- 96/366

Suivant