Envoyé par
sys1
J'ai tenté d'adapter ton code. J'ai créé 2 imagelist, l'une contenant les tiles du niveau, l'autre les phases d'animation de pacman.
J'ai mis un TTimer à 10ms et ajouté l'événement OnPaint dans la Form (double click dans les propriétés). Dans le Form.Create, j'ai défini la map comme lors de mon code original.
1) InvalidateRect(Handle,nil,False); ne fonctionne pas, mais en le remplaçant par refresh; (qui fait donc appel à FormPaint), ça semble revenir au même.
2) Mon personnage ne se déplace pas tile par tile, mais pixel par pixel, c'est super classe mais ça complique les choses. Tandis que dans donkeyman, il suffit de remplacer une tile par une autre, ici c'est une autre affaire. Les tiles doivent être toutes dessinées en premier, puis le pacman posé par dessus aux coordonnées x,y, avec x et y étant en pixels et non en numéro de colonne/ligne de tiles.
La conséquence est que lorsque pacman se déplace, il laisse une trace derrière lui, même si le déplacement est fluide et sans scintillement grâce à l'image virtuelle FDessin...
Partager