Lorsqu'on souhaite déplacer un objet dans la fenêtre graphique, on
peut penser qu'il suffit d'afficher l'objet à une position initiale (xobj,yobj),
puis de calculer ses nouvelles coordonnées (ce calcul dépend évidemment
de la trajectoire de l'objet) pour pouvoir le réafficher à côté, et
ainsi de suite, au sein d'une boucle. Visuellement, cette succession
d'affichages de l'objet à des positions qui varient en fonction du
temps, donne l'impression d'un objet en mouvement (identique à un
dessin animé). On peut alors modifier facilement la fluidité et la
rapidité de déplacement de l'objet. Attention cependant, car dans un
dessin animé, chaque image vient remplacer la précédente. En effet, si
elles s'empilaient les unes sur les autres, on ne verrait rapidement
plus rien (!!), et c'est ce qui se passe avec la fenêtre graphique.
Celle-ci n'est pas "réactualisée" intégralement en permanence. C'est
donc à nous de gérer ce problème. Il suffit avant d'afficher l'objet à
sa nouvelle position d'avoir remis la fenêtre graphique en l'état;
en d'autres termes, il faut prendre soin d'effacer l'objet précédent !
Au lieu d'effacer uniquement l'objet, on peut parfois se contenter d'un cleardevice();
(c'est simple : une seule commande !) qui entraine l'effacement de
toute la fenêtre graphique, et par conséquent de l'objet précédent qui
s'y trouvait. Sous certaines conditions (couleur de fond unie, par
exemple), ceci est rapide et garde la fluidité du jeu. Par contre,
si le fond de la fenêtre graphique possède un décor plus complexe
(réalisé via les fonctions graphiques WINBGIM ou via l'insertion d'une
image (voir readimagefile();)),
cette solution n'est plus viable, pusiqu'il faut redessiner le décor ou
recharger une image dans la fenêtre graphique après chaque cleardevice();. Ceci est trop long et ralentit l'exécution du jeu.