La classe Displayer doit être dérivée afin de réaliser une classe permettant d'afficher le plateau de jeu souhaité. Différents types d'affichage peuvent être envisagés : affichage en console, affichage en mode graphique (Swing ou AWT). Cependant actuellement aucune commodité n'est offerte pour l'affichage en mode graphique.
Toute classe dérivant de Displayer doit implémenter la méthode boolean isSupportedGame(Game) retournant true si et seulement si la classe implémentée peut afficher le plateau de jeu de l'instance de Game passée en paramètre.
Une instance de Displayer doit être initialisée par l'appel à sa méthode void initialization(Map), cette méthode permet de spécifier certains paramètres pour l'affichage indiqués dans une instance de Map.
En cas de paramètre erroné ou d'absence de paramètre indispensable, il est nécessaire de lever une exception StrategicException.
Il est nécessaire également d'implémenter la méthode abstraite Map getDefaultParams() : cette méthode retourne une instance Map de paramètres à utiliser par défaut par le Displayer (utilisés lors d'un appel à la initialization() ou à initialization(null)).
Afin de gérer l'affichage, la méthode void display() doit être implémentée.
Le programmeur peut alors utiliser le membre protégé game, référence vers la session de jeu courante, afin d'obtenir les différentes informations concernant le jeu en cours (historique, situation du plateau courant,...) pour en faire usage pour l'affichage.
A noter qu'il existe déjà dans le package game une classe ConsoleDisplayer dérivant de Displayer permettant de réaliser un affichage en console.
Si l'on choisit de dériver cette classe, il est inutile d'implémenter display() : il suffit d'implémenter la nouvelle méthode abstraite String getStringRepresentation() retournant une chaîne de caractère utilisée ensuite pour l'affichage en console.
Il est possible d'implémenter l'interface Inputable dans une classe dérivée de Displayer. Cette interface définit une méthode Game.Board.Move input(int timeout) permettant d'obtenir un coup de l'utilisateur limité par un temps timeout en millisecondes (ce temps limite peut ne pas être respecté en cas d'utilisation de fonctions de lecture bloquantes). Si ce temps limite est échu, null doit être retourné.
La classe ConsoleDisplayer implémente déjà la méthode input de l'interface Inputable. L'implémentation de cette méthode input() permet d'obtenir une commande de coup en ligne de commande.
Elle introduit deux méthodes abstraites qui doivent implémentées par les classes dérivées :