Articles taggés avec ‘programmation’

 Pong Clock :: calcul des trajectoires

 16 décembre 2009  Bricolage  Aucun commentaire

Deux rapides améliorations ont été apportées :

La police de caractères utilisée pour l’affichage des scores a été modifiée pour se rapprocher du jeu original, plus « carrée », composée de lignes simples. Ça n’a l’air de rien comme ça, mais j’ai dû « dessiner » les 10 chiffres pixel par pixel dans le code (par groupe de 8 pixels, pour être précis). Ce qui donne un truc très sympa dans ce genre là (une ligne = un caractère) :

unsigned char pongfont[4096] = {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // chr(0)
// [...]
254,254,198,198,198,198,198,198,198,198,198,198,198,254,254,0, // chr(48) = 0
24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,0, // chr(49) = 1
254,254,6,6,6,6,254,254,192,192,192,192,192,254,254,0, // chr(50) = 2
254,254,6,6,6,6,62,62,6,6,6,6,6,254,254,0, // chr(51) = 3
198,198,198,198,198,198,254,254,6,6,6,6,6,6,6,0, // chr(52) = 4
254,254,192,192,192,192,254,254,6,6,6,6,6,254,254,0, // chr(53) = 5
254,254,192,192,192,192,254,254,198,198,198,198,198,254,254,0, // chr(54) = 6
254,254,6,6,6,6,6,6,6,6,6,6,6,6,6,0, // chr(55) = 7
254,254,198,198,198,198,254,254,198,198,198,198,198,254,254,0, // chr(56) = 8
254,254,198,198,198,198,254,254,6,6,6,6,6,254,254,0, // chr(57) = 9
// [...]
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0  // chr(255) = ÿ
};
Mise à jour de la police de caractères, premières informations de trajectoire.

Mise à jour de la police de caractères, premières informations de trajectoire.

Enfin, pas forcément plus simple, sans être non plus très complexe, la détermination de la trajectoire qui sera suivie par la balle lorsqu’elle touche la raquette, jusqu’à la raquette adverse, affichée en vert sur ces captures d’écran en mode debug.

Le nombre de rebonds peut rapidement devenir important...

Le nombre de rebonds peut rapidement devenir important...

C’est à peu près tout ce qu’il est possible de faire à ce stade avec des images fixes. Les prochaines modifications m’amèneront certainement à me lancer à minima dans l’animation de la balle.

 Pong Clock, les premières images

 16 décembre 2009  Bricolage  Aucun commentaire

Voila enfin, en exclusivité mondiale, les premières images du développement de l’horloge Pong !

Avec également un petit bilan intermédiaire des frais :

  • 2/3 heures de développement
  • 200 lignes de code (sans la police de caractères)

Avec en contrepartie les résultats suivants :

  • Affichage du terrain, des raquettes, et de la balle.
  • Affichage du score (police non définitive) en fonction de de l’heure système.
  • Gestion d’une zone vide optionnelle au dessus du terrain, pouvant être dédiée à l’affichage des scores ou de tout autre information.
  • Taille du terrain, des raquettes, et de la balle customisables.
  • Gestion de plusieurs résolutions en 4/3 de 320*240 à 1600*1200.
  • Affichage des premiers éléments de débogage.

Pour faciliter mes tests, les développements sont effectués sur une machine virtuelle. Les captures d’écran sont également issues de cette VM. Voici l’écran d’initialisation :

L'écran de départ, balle au centre, score initialisé à l'heure courante : 20h27.

L'écran de départ, balle au centre, score initialisé à l'heure courante : 20h27.

Les éléments sont pour le moment tous fixes. Dès les premiers moments d’animation, je devrai contrôler que chaque élément reste dans son périmètre. C’est pourquoi j’ai d’ores et déjà commencé à afficher en surimpression quelques éléments de débogage.

  • En rouge le périmètre de mouvement de la balle, par rapport à son centre.
  • En bleu le rail des deux raquettes, par rapport à leur centre également.
Affichage des infos de débogage. Notez la zone vide en haut de l'écran, réduisant ainsi la taille du terrain.

Affichage des infos de débogage. Notez la zone vide en haut de l'écran, réduisant ainsi la taille du terrain.

Je trouve le résultat satisfaisant pour le moment. On attaquera les choses sérieuses la prochaine fois, puisqu’il faudra commencer à animer les différents éléments, et prévoir la trajectoire de la balle.

Stay tuned.