* Práctica 4.4: Kotlin POO III
P4.4 - Robots¶
Descripción ¿Dónde está R2D2?¶
Calcula dónde estará un robot (sus coordenadas finales) que se encuentra en una cuadrícula representada por los ejes "x" e "y".
- El robot comienza en la coordenada (0, 0).
- Para indicarle que se mueva, le enviamos un array formado por enteros (positivos o negativos) que indican la secuencia de pasos a dar.
Por ejemplo:
[10, 5, -2]
indica que primero se mueve10
pasos, se detiene, luego5
, se detiene, y finalmente2
. El resultado en este caso sería(x: -5, y: 12)
- Si el número de pasos es negativo, se desplazaría en sentido contrario al que está mirando.
- Los primeros pasos los hace en el eje "y". Interpretamos que está mirando hacia la parte positiva del eje "y".
- El robot tiene un fallo en su programación: cada vez que finaliza una secuencia de pasos gira 90 grados en el sentido contrario a las agujas del reloj.
No te olvides lo aprendido en las primeras unidades. Estructura condicionales, repetitivas, comentarios, etc.
Tras los siguientes movimientos:
Las salidas son estas:x: -5, y: 12, direction: POSITIVEX
x: 0, y: 0, direction: POSITIVEX
x: 0, y: 0, direction: POSITIVEY
x: 5, y: -12, direction: POSITIVEX
x: 9, y: -20, direction: NEGATIVEX
PARTE 1¶
-
Crear una versión del programa ¿Dónde está R2D2?, pero ORIENTADO A OBJETOS.
-
La clase Robot debe tener 4 propiedades:
nombre
,posX
,posY
ydireccion
. También tendrá un comportamiento por medio de 3 métodos:mover()
,obtenerPosicion()
yobtenerDireccion()
. -
El método
mover()
debe recibir un array de elementos enteros y no retornará nada, ya que los cambios quedarán almacenados en las propiedades del mismo. -
El método
obtenerDireccion()
no recibe parámetros y retorna una cadena de caracteres con la direcciónPositiveX
,NegativeX
,PositiveY
oNegativeY
. (Posible mejora conenum class
Enum classes) -
El método
obtenerPosicion()
debe devolver la posición. Ejemplo:(10, -5)
. -
Describe la posición actual del robot en el método
toString()
. (Pulsa Ctrl+o) Ejemplo:R2D2 está en (10, -5) PositiveX
-
Un objeto de la clase Robot debe inicializarse siempre en la posición
(0, 0)
y la dirección eje Y positivo (hacia arriba)PositiveY
cuando se instancia. En esta versión ya no va a moverse siempre desde la posición(0,0)
, sino que lo hará desde la última posición y dirección dónde se quedó al realizar su último movimiento. -
En este programa, vamos a realizar los mismos movimientos, pero el robot comenzará cada movimiento en la posición final después de realizar el movimiento anterior.
-
En el main debes crear un objeto de Robot (o una variable de tipo Robot) con el nombre
R2D2
. El nombre de la variable que utilices para crearlo puede serrobot1
. -
La clase Robot debe obligar a introducir un nombre que no esté vacío.
-
Cread los movimientos en un array de arrays y recorrerlos para realizar en cada iteración los movimientos del robot y mostrar la posición del mismo al finalizar cada uno. En cada iteración del bucle llamaremos a los métodos
mover()
ymostrarPosicion()
.
Un ejemplo de una estructura que podéis utilizar para los movimientos sería la siguiente: