Hola! Mi código quedó muy diferente pero el resultado fue el mismo. Lo que se me ocurrió fue hacer una variable booleana y que se mueva a la derecha mientras sea true hasta que llegue a ser 600. Cuando alcanza ese valor, se convierte a false y lo que hará es x--. Pero siento que mi código no es el mejor, creo que podría optimizarse. Alguna idea, pero que sea aun usando la variable booleana?
<canvas width="600" height="400"> </canvas>
<script>
var pantalla = document.querySelector("canvas");
var pincel = pantalla.getContext("2d");
pincel.fillStyle = "lightgrey";
pincel.fillRect(0,0,600,400);
function disenharCircunferencia(x,y,radio){
pincel.fillStyle = "blue";
pincel.beginPath();
pincel.arc(x,y,radio,0,2*Math.PI);
pincel.fill();
}
function limpiarPantalla(){
pincel.clearRect(0,0,600,400);
}
var x = 0
var derecha = true;
function actualizarPantalla(){
if (derecha){
limpiarPantalla();
disenharCircunferencia(x,20,10);
if (x<600-10){
x++;
}
else {
derecha = false;
}
}
else {
limpiarPantalla();
disenharCircunferencia(x,20,10);
if (x>11){
x--;
}
else {
derecha = true;
}
}
}
setInterval(actualizarPantalla,5);
</script>