U4.4 · Robots (parte 1)¶
Del programa con bucles al programa con objetos.
Ejercicio 4.11¶
¿Dónde está R2D2? Un robot empieza en (0, 0) mirando hacia el eje Y positivo. Recibe una lista de enteros con los pasos que da en cada tramo (positivo avanza, negativo retrocede). Cada vez que termina una secuencia, gira 90° en sentido contrario a las agujas del reloj.
| Movimientos | Salida |
|---|---|
[10, 5, -2] |
x: -5, y: 12, direction: POSITIVEX |
[0, 0, 0] |
x: 0, y: 0, direction: POSITIVEX |
[] |
x: 0, y: 0, direction: POSITIVEY |
[-10, -5, 2] |
x: 5, y: -12, direction: POSITIVEX |
[-10, -5, 2, 4, -8] |
x: 9, y: -20, direction: NEGATIVEX |
Resuélvelo primero sin objetos, con condicionales y bucles.
Ejercicio 4.12¶
Versión orientada a objetos. Crea la clase Robot con nombre, posX, posY y direccion, y los métodos mover(lista) (sin retorno, actualiza el estado), obtenerPosicion(), obtenerDireccion() (PositiveX, NegativeX, PositiveY o NegativeY; mejora: enumerado) y toString, por ejemplo R2D2 está en (10, -5) PositiveX.
Un robot se crea siempre en (0, 0) mirando a PositiveY y el nombre no puede estar vacío. Ahora no vuelve al origen: cada movimiento empieza donde acabó el anterior.
En main crea R2D2 y recorre una lista de listas de movimientos, mostrando el robot tras cada una:
[1, -5, 0, -9], [3, 3, 5, 6, 1, 0, 0, -7], [2, 1, 0, -1, 1, 1, -4], [], [3, 5]
Salida esperada:
R2D2 está en (-4, 1) PositiveY
R2D2 está en (-8, 0) PositiveY
R2D2 está en (-11, 7) PositiveX
R2D2 está en (-11, 7) PositiveX
R2D2 está en (-8, 12) NegativeX