Implementación de Gráficos Interactivos: Diana y Lámpara en Programación

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 4,68 KB

Desarrollo de una Diana y una Lámpara Interactiva

1. Implementación de la Diana

Cálculo de diámetros proporcionales

En primer lugar, se creó la variable numCirculos y se asignó en la función draw, igualándola a 0. Se desarrolló una función específica que contiene la fórmula para calcular el diámetro de las circunferencias de la diana (línea 57). A esta operación se le multiplica la variable maximo para que el tamaño varíe proporcionalmente junto al tamaño del canvas. Para lograr esto, también se creó la función calcularMaximo, en la cual reside una estructura if y else que afecta a las propiedades width y height; al mismo tiempo, esta función sirve para calcular el diámetro del círculo más grande, permitiendo dibujarlos de mayor a menor tamaño.

Lógica de dibujo de los círculos

Finalmente, en la función draw se ejecuta un bucle while que funciona mientras la variable numCirculos sea menor o igual a 10. Esto permite que se dibujen los círculos y se pinten mediante una estructura switch. La variable numCirculos se incrementa posteriormente para que las circunferencias vayan disminuyendo su tamaño, facilitando a su vez el cambio de color progresivo.

Pintado de las circunferencias

Primero se crearon las variables de color, las cuales se definieron después en el setup para asignarles sus valores correspondientes. Luego, se creó una función llamada pintarSwitch, donde se asignó el parámetro de caso que se utilizaría en el switch. En cada caso creado, se le otorga un valor para pintar y repasar otras variables diseñadas para afectar tanto al círculo como al color del borde. Después, mediante un while dentro del draw, se invoca la función pintarSwitch pasando el parámetro numCirculos (que inicia en 0) y se incrementa para recorrer el switch y transicionar de un color a otro.

2. Funcionamiento de la Lámpara

Cambio de estado de la luz

Se definieron las variables de los estados de la lámpara y se configuraron en el setup para establecer los valores de los colores que representan cada estado. Seguidamente, se implementó la función pintarSwitch para que la lámpara pueda recorrer todos sus estados de luz; de este modo, a la variable colorluz se le asigna un valor dependiendo del caso actual (estado = 0, estado = 1, etc.).

A este switch se le asigna el parámetro estado, el cual se integra dentro de una función mousePressed. Esta función permite el cambio de estado mediante un incremento que se aplica al hacer clic dentro del "botón". Dentro de esta lógica, existen diferentes estructuras if: la primera detecta el clic en la zona correspondiente para generar el incremento mencionado; dentro de esta, se encuentra un if anidado para que el estado de la luz alterne entre encendido y apagado. En este primer bloque se incluye la función pintarSwitch(estado) para que las órdenes afecten al switch. Posteriormente, se añadieron bloques else y else if que controlan el interruptor principal de encendido y apagado.

Estado de encendido y apagado general

Se creó la variable booleana encender con un valor inicial TRUE para que, al ejecutar el programa, la regleta esté encendida por defecto. En la función mousePressed, se sitúa una serie de condiciones if responsables de variar el estado de la lámpara, asegurar que la secuencia de estados se reinicie al finalizar y afectar al switch previamente establecido.

En los bloques else if y else finales se gestiona el funcionamiento de la regleta: si se cumple la condición del paréntesis (hacer clic en la zona especificada), la regleta cambia su estado, es decir, encender = TRUE o encender = FALSE. Finalmente, en el draw, se aplica un if que engloba todo el funcionamiento de la lámpara. Dependiendo de si encender es verdadero o falso, se ejecutarán las órdenes que afectan a la totalidad del canvas.

Entradas relacionadas: