Je suis entré de plein pied dans le vif du sujet, la programmation à proprement parler.Voici un aperçu des enjeux majeurs du moment :
- Gestion d’évènements et animation
La première version de mon test fonctionnait sur une gestion d’évènements en « push », c’est à dire que le programme était en pause par défaut, et lorsqu’un évènement prévu (appui sur une touche de déplacement par exemple) survenait, le programme sollicitait le processeur pour exécuter l’action en question.
Pour tout un tas de raison, je suis passé sur une gestion d’évènements en « pull » : le programme regarde en permanence les évènements qui se produisent (quelles touches sont enfoncées), et agit si nécessaire. Cette vigilance permanente étant gourmande en ressources, il est nécessaire d’organiser les périodes d’activité / inactivité du programme, en mettant en place une gestion du temps. Concrètement, il faut explicitement demander au programme de se reposer 20, 30 millisecondes (ou toute autre valeur), avant de s’actualiser et d’afficher l’image à l’écran.
Cette nouvelle façon de faire a eu des effets positifs. D’une part, cela permet de gérer l’appui continue sur une touche. On ne s’intéresse plus à l’envoi unique d’un signal au moment où une touche est enfoncée, on s’intéresse en temps réel à l’état de la touche (enfoncée ou non). Tant que l’état de la touche est « enfoncé », l’action est maintenue. D’autre part, cela permet de gérer les appuis sur plusieurs touches en même temps. Concrètement, mon personnage peut désormais se déplacer en diagonale :p
Ma première idée de découpage de code en fichiers n’est clairement pas optimale, et il va falloir que je remette de l’ordre. Néanmoins, la situation actuelle m’a permis de tester l’envoi de pointeurs en paramètre. En l’état, j’ai une fonction qui sert à déplacer mon personnage (ou « sprite », enfin le crâne, quoi). Elle a besoin de modifier la position dudit personnage, position qui est stockée dans une structure. Il faut donc envoyer à la fonction un pointeur sur cette structure.