Oi Gabriel tudo bem?
Faltou colocar um if dentro da atualizaTela1 pra quando x for maior que 580 x ser igual a 0.
Veja como ficou meu código:
<canvas width="600" height="400"></canvas>
<script>
var tela = document.querySelector('canvas');
var pincel = tela.getContext('2d');
pincel.fillStyle = 'lightgrey';
pincel.fillRect(0, 0, 600, 400);
function desenhaCirculo(x, y, raio) {
pincel.fillStyle = "blue";
pincel.beginPath();
pincel.arc(x, y, raio, 0, 2 * Math.PI);
pincel.fill();
}
function limpaTela() {
pincel.clearRect(0, 0, 600, 400);
}
var x = 20;
var vaiEVolta = 0;
function atualizaTela2() {
limpaTela();
desenhaCirculo(x, 20, 10);
x--;
console.log(vaiEVolta);
console.log(x);
}
function atualizaTela1() {
limpaTela();
desenhaCirculo(x, 20, 10);
x++;
console.log(vaiEVolta);
console.log(x);
if (x >= 580) {
x = 0;
}
}
if (vaiEVolta == 0) {
setInterval(atualizaTela1, 1);
}
if (x >= 580) {
vaiEVolta++;
}
if (vaiEVolta == 1) {
setInterval(atualizaTela2, 1);
}
if (x <= 19) {
vaiEVolta--;
}
</script>
Espero ter ajudado!!!