La sentencia Do tiene esta forma:
do <sentencia> until(<expresión>)
La sentencia (que puede también ser un bloque) es ejecutada hasta que la expresión sea verdadera. La sentencia se ejecuta por lo menos una vez. Ten cuidado con los ciclos do. Puedes fácilmente crear uno que se repita indefinidamente, en cuyo caso el juego se bloqueará y ya no responderá a los eventos generados por el usuario.
Ejemplo
El siguiente programa intenta colocar el objeto actual en una posición libre
(esto es lo mismo que mover un objeto en una posición aleatoria)
{
do
{
x = random(room_width);
y = random(room_height);
}
until (place_free(x,y))
}