Actividad en Clases: Dibujando un Robot en Laberinto

1.- Swing permite definir una transformación para instancias de Graphics2D de manera que luego éste aplique esta transformación a todas sus acciones al dibujar. Por ejemplo, es posible incluir el objeto Graphics2D una transformación de escala, rotación, traslación, etc. En esta tarea es conveniente incluir una transformación de escala del eje X e Y. Así usted no debe escalar cada elemento gráfico a dibujar, sólo debe hacerlo una vez y a la instancia de Grraphiccs2D.
Modifique su clase MainPanel, que si gusta podría renombrar MyWorld, e incluya:

   {
      SCALE_TRANSFORM = AffineTransform.getScaleInstance(SCALE,SCALE);
   }
   private static AffineTransform SCALE_TRANSFORM;
   private static int SCALE=2;

Luego en su método paintComponent, antes de iniciar su dibujado, incluya:
 g2.transform(SCALE_TRANSFORM);
Elimine todo escalamiento usado previamente para mostrar el laberinto y use esta forma de escalar lo dibujado.

2.- Complete la clase MainMenuBar para incluir el menu World y sus opciones "Create Robbot" y "Set delta t". Cree una clase, por ejemplo, RobotCreationListener que implemente ActionListener y se haga cargo de responder al evento de selección del ítem "Create Robot". Programe lo necesario para incluir un nuevo Robot en la instancia de MainPanel (o mejor ahora renombrada MyWorld). Para alojar posiblemente varios robots, considere el uso de un ArrayList<Robot> cono atributo. Pruebe que su código compila y corre.

3.- En clase Robot de la tarea 1, incluya un artibuto view instancia de RobotView. La clase RobotView se encarga de mantener los objetos gráficos que permitirán dibujar el cuerpo del robot y sus sensores. Modifique el método paintComponent para pedir dibujar la lista de robots de MyWorld (en adelante usaré aquí MyWorld en lugar de MainPanel). Incluya el método draw en clase Robot, el cual se limita a invocar view.draw(). Implemente el métoodo draw de la clase RobotView para que se muestre un círculo en la posición del robot.

4.- Complete la clase RobotView para que además se muestren círculos de color para cada uno de los sensores. Tome en consideración la referencia usadas por la clase Ellipse de Java para ubicarse en pantalla (su x,y no es el centro).

5.- Analice si los colores observados para cada sensor son lo esperado y haga alguna propuesta de corrección.