!Para empezar tenias algunos errores en donde dentro de tus condicionales no le estabas asignando ningún comportamiento a x, te falto agregar x = x + dirección o x = x - dirección dado el caso necesario,debido a esto el circulo no se movería por que no estamos alterando el comportamiento de x, es decir no la estamos aumentando ni decrementando, también al usar el condicional if (x == 0) e if( x ==600) tu programa solo moveria el ciruculo cuando x tenga los valores específicos x = 600 y x == 0.
Dándole solución al problema hagamos un ejercicio manual para entender lo que queremos hacer:
Primero definamos el problema actual, lo que necesitamos es que cuando la posición x sea menor a 600, x se incremente en 1 hasta llegar a 600 y cuando llegue a 600 x comience a disminuir en 1 hasta llegar a 0, una vez en 0 tiene que volver a aumentar en 1
X ACTUAL | COMPORTAMIENTO | X FINAL |
---|
598 | AUMENTO | 599 |
599 | AUMENTO | 600 |
600 | DECREMENTO | 599 |
599 | DECREMENTO | 598 |
598 | DECREMENTO | 597 |
597 | DECREMENTO | 596 |
...... | ........................ | ....... |
3 | DECREMENTO | 2 |
2 | DECREMENTO | 1 |
1 | DECREMENTO | 0 |
0 | AUMENTO | 1 |
Ya que entendimos el problema, analicemos las posibles soluciones si usamos los condicionales if( x <600) e if (x > 600) veamos lo que pasa.
if (x<600){
dirrección=1;
x = x + direccion;
}
if (x>600){
direccion = 1;
x = x - direccion;
}
X ACTUAL | CONDICION A USAR | X FINAL |
---|
598 | if (x<600) | 599 |
599 | if (x<600) | 600 |
600 | if (x>600) | 599 |
599 | if (x<600) | 600 |
600 | if (x>600) | 599 |
599 | if (x<600) | 600 |
Aquí podemos notar que el programa contiene un gran error, recordemos que los programas leen instrucciones de arriba hacia abajo, el comportamiento al llegar a 600 seria el esperado, reduciría el numero en 1, es decir nuestra x final seria 599, pero al ejecutar la siguiente instrucción en lugar de incrementarlo lo va a aumentar debido a que realizara las instrucciones contenidas dentro del if(x <600).
Para solucionar este problema yo agregue una variable nueva de tipo boolena a la que llame "sentido" y cambie el condicional lógico "if", inicie la variable en falso para indicar que el sentido va a la derecha, mientras sentido sea falso x va a aumentar en 1, después de realizar el aumento a través de otro condicional verificamos si es igual a 600, cuando sea igual a 600 va a cambiar el valor de sentido a verdadero, cuando sentido sea verdadero x va a ser disminuido en 1 y nuevamente verificaremos si es igual a 0, cuando x sea igual a 0 cambiamos el valor de sentido a falso nuevamente para que la x aumente en 1 y la bola vaya en sentido a la derecha.
if (sentido == false){
x = x++
if (x == 600){
sentido = true;
}
}
if (sentido == true){
x--;
if (x == 0){
sentido = false;
}
}
X ACTUAL | SENTIDO ACTUAL | X FINAL | SENTIDO FINAL |
---|
0 | FALSE | 1 | FALSE |
1 | FALSE | 2 | FALSE |
.... | ......... | ...... | ....... |
598 | FALSE | 599 | FALSE |
599 | FALSE | 600 | TRUE |
599 | TRUE | 598 | FALSE |
..... | ....... | ...... | ..... |
2 | TRUE | 1 | TRUE |
1 | TRUE | 0 | FALSE |
0 | FALSE | 1 | TRUE |
también te recomiendo no olvides usar los ";" (punto y coma) practicar el uso te sera de mucha ayuda mas adelante.
Te dejo mi numero de whats por cualquier duda 2225273110, solo dime tu nombre y que eres de alura para que te identifique.
En la siguiente respuesta esta el código ya que aquí ya no cupo.