Voilà le diagramme UML complet de notre jeu.
Cette classe est le pilier central du jeu. Elle s'appuie sur les propriétés de la classe MIDlet qui permet de faire interagir le programme java avec les fonctionnalités du portable.
La zone de jeu, le snake et les pommes sont générés et dessinés avec la méthode graphique "paint". La zone de jeu n'est dessinée qu'une seule fois pour éviter une surcharge inutile du processeur. Elle n'est donc pas actualisée. La classe Canvas permet la gestion des touches directionnelles. Un processus léger en tache de fond (thread) actualise la nouvelle position du snake, et ainsi, fait paraître un mouvement. Il gère également l'évolution du score et du niveau, et la vitesse de jeu.
Le snake est une combinaison d'un ou plusieurs bouts de snake encapsulés dans un tableau vector. Le premier représente la tête, et le dernier la queue. Lorsque qu'il se déplace, la tête s'incrémente et la queue se décrémente. S'il mange une pomme, la tête s'incrémente et la queue, quant à elle, n'est pas modifiée. Le changement de direction est représenté par l'ajout d'un nouveau bout de snake d'une taille minime dans la direction désirée.
Le bout de snake est un segment du snake. Il est caractérisé par des coordonnées X,Y , par une longueur L et une direction.
Les pommes sont la nourriture que mange le snake pour grandir. Elles sont placées dans la zone de jeu avec des coordonnées pseudo aléatoires grâce à une méthode de classe qui renvoie la différence de temps, en millisecondes, entre le temps courant et le 1er janvier 1970 à minuit.
La page d'accueil est un formulaire de type Form. Cela facilite l'insertion d'items (images, textfields, gauges ...) et la mise en page. Un thread et un compteur arbitraire permettent l'effet diaporama. Le point négatif de cette méthode est que la vitesse du défilement des images dépend de la puissance du processeur et de son activité. Il est possible de rentrer le nom du joueur grâce à un "editable text field" et un tour de passe-passe qui permet de le garder en mémoire le temps de la partie.
Le niveau est incrémenté ou décrémenté en réponse au signal d'une touche spécifiée. Un message d'erreur signale si le niveau est trop élevé ou, au contraire, nul ou négatif.
Exception générée lorsque le snake se mord la queue ou est hors de la zone de jeu.