DO … LOOP

Instruction

Syntaxe

Exécute son corps une fois par image : la boucle d'images d'un jeu classique. Le code avant DO s'exécute d'abord une fois, le code après LOOP une fois quand EXIT quitte la boucle.

[<statements>]
DO
  <statements>
  Sync()
LOOP
[<statements>]

S’écrit aussi : DO, LOOP

Les éléments

<statements>Avant DO : la mise en place, exécutée une fois. Entre DO et LOOP : le corps de chaque image. Après LOOP : exécuté une fois, après EXIT.

À savoir

  • Un seul DO … LOOP par programme, au premier niveau uniquement. Pas dans un IF, une boucle ou une FUNCTION : "DO/LOOP is supported once, at top level only".
  • Le corps doit appeler Sync(), Swap() ou YieldTask() pour rendre la main à l'image. Sinon le compilateur répond "DO/LOOP requires SYNC() so the loop can yield a frame".
  • En AGK et DarkBASIC, DO … LOOP est une simple boucle sans fin. Ici, c'est la boucle d'images. Pour toute autre boucle, prenez WHILE ou REPEAT. DO WHILE, DO UNTIL, LOOP WHILE et LOOP UNTIL n'existent pas.
  • CONTINUE dans la boucle d'images saute le Sync() placé plus bas. S'il se déclenche à chaque tour, le jeu se fige. Placez Sync() avant le CONTINUE.
  • N'écrivez pas de FUNCTION main() dans un programme avec une boucle DO : la boucle est compilée sous ce nom, les deux entrent en collision et la boucle ne tourne jamais. Rien ne vous prévient.
  • END dans la boucle arrête le programme et saute le code après LOOP. Wait() et Sleep() sont refusés après LOOP.

Exemple

frames = 0Console("start")   ' startDO  frames = frames + 1  IF frames = 3 THEN EXIT  Sync()LOOPConsole("left after " + Str(frames))   ' left after 3

Commandes associées