Universidad de Costa Rica
Escuela de Ciencias de la Computación e Informática
CI-0202 Principios de informática - 2012b
Profesor Jeisson Hidalgo-Céspedes
Fecha: 16-nov-2012. Entrega grupo 10: 03-dic-2012, grupo 08: 04-dic-2012.
Implemente una versión gráfica del programa para calcular áreas de pisos del examen 02 (grupo 08), la cual dibuja el área mientras el inspector realiza su recorrido, con el fin de ayudarle visualmente a comprobar que es la correcta. La interfaz del programa consistirá de un "lienzo" (JPanel
) donde se dibujarán los recorridos del inspector; un campo de texto (JTextField
) donde el inspector ingresará cada lado del recorrido; y un botón (JButton
) que sirve para agregar el lado al dibujo. En la siguiente figura se aprecia el inspector agregando el séptimo lado del recorrido: 3 metros hacia el norte, indicado como 3N
en el campo de texto. Al presionar el botón Agregar
, el lado será agregado al dibujo.
Cuando el inspector termina su recorrido, es decir, regresa a la posición de partida, el dibujo se habrá completado. El programa calculará el área y la presentará en el mismo campo de texto como se aprecia en la figura siguiente. El botón Aceptar
cambia su texto a "Limpiar". Al presionarlo, el dibujo será borrado, la aplicación crea un nuevo recorrido, y habilita el campo de texto en la espera de ingreso de los nuevos lados.
La aplicación se mantiene creando recorridos indefinidamente, hasta que el usuario decide salirse, presionando el botón X
a un extremo de la barra de título de la ventana (JFrame
). Para su implementación, puede tomar como base el código de ejemplo visto en clase.
JPanel
están invertidas de acuerdo a la convención matemática (i.e.: el norte debe dibujarse hacia arriba). Pinta los tamaños en metros de cada lado del recorrido. Sugerencia, pinte esta longitud en la mitad del segmento, es decir el punto medio: $$\left( {{x_1 + x_2} \over 2}, {{y_1 + y_2} \over 2} \right)$$12N
para indicar 12 metros norte. La letra para el punto cardinal debe aceptar tanto mayúsculas como minúsculas. Sugerencia, acepte el oeste tanto con la letra O
como la letra 'W'.Reiniciar
", que al ser presionado, descarta el recorrido actual e inicia un nuevo. Si no hay ningún recorrido en progreso, el botón tendrá el texto "Salir
" y al ser presionado, termina la aplicación invocando a System.exit(0)
.[5% Opcional] Permita que en lugar de un único lado, el inspector pueda ingresar varios lados separados por espacios en blanco en el campo de texto. Sugerencia, aproveche el método split()
de la clase String
. Puede utilizar los siguientes recorridos como prueba:
4W 7N 7E 9S 3W 2N
2S 4W 4N 6E 3N 3E 9S 3W 4N 2W
3N 5E 2S 3W 3S 6W 3N 1W 4N 3E 5S 2E
600s 200e 800n 600w 300n 1100e 300s 200w 800s 200e 300s 1100w 300n 200e 600n 200e
40s 40w 20s 110e 20n 40w 40n 20e 30n 20e 30n 20w 30n 20w 30n 30w 30s 20w 30s 20w 30s 20e 30s 20e
4s 2e 5s 2w 2s 3w 2n 2w 5n 2e 4n 12w 4s 2e 5s 2w 2s 3w 2n 2w 5n 2e 8n 11e 2n 11e 2s 11e 8s 2e 5s 2w 2s 3w 2n 2w 5n 2e 4n 12w
[10% Opcional] Su programa debe dibujar el recorrido manteniendo una escala. Si la escala usada es 1px:1m
, es decir, un píxel de la pantalla equivale a un metro del recorrido, ocurrirá que recorridos pequeños serán casi invisibles en la pantalla, y aquellos extensos rebasarán las dimensiones de la ventana. Modifique su programa para ajustar la escala dinámicamente, de tal forma que el recorrido sea siempre visible en el tamaño actual de la ventana. Por ejemplo:
Para presentar su solución, comprima los archivos .java
que haya creado y súbalos a Mediación virtual en la asignación con nombre Tarea05
.