Saltar a contenido

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