Déplacer un objet

Pour démarrer simplement

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.