es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo saber qué botón se está presionando con un estilo procedimental en C++ SFML

Estoy programando un juego de buscaminas, y en el juego, hay 2 tipos de botones: las celdas del tablero y los botones de utilidad como reiniciar y guardar la partida.

He diseñado el juego en un estilo de programación procedural, quiero saber cómo puedo comprobar qué tipo de botón se ha presionado y, por lo tanto, activar diferentes acciones para esos botones de manera elegante. Debido a que solo tenemos las coordenadas X e Y del ratón cada vez que se produce el evento del ratón, la forma en que solía hacerlo era comprobar si un botón tiene el cursor del ratón dentro cuando se presiona el ratón. Pero esta forma de hacerlo es muy torpe y comienza a volverse más tediosa cuando tengo que hacerlo para cada una de las escenas del juego (quizás la escena del menú donde solo tienes los botones de utilidad, o la escena del juego donde tienes ambos tipos de botones).

Sé que se puede usar OOP y comprobar cada tipo de objeto “clicable” en cada escena, pero ya he diseñado el juego en la consola con un estilo de programación procedural antes y no quiero perder el tiempo cambiándolo al estilo OOP.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Un enfoque para resolver este problema mientras se utiliza todavía una programación procedural sería utilizar una simple declaración if-else para diferenciar entre los dos tipos de botones. Esto se puede hacer implementando una comprobación para la ubicación del cursor del ratón y comparándolo con los tipos de botones.

    Por ejemplo, primero se podrían obtener las coordenadas X e Y del cursor del ratón cuando se hace clic. Luego, se pueden comparar estas coordenadas con la ubicación de las celdas en el tablero y los botones de utilidad mediante declaraciones condicionales.

    Para diferenciar entre los dos tipos de botón, se podrían verificar sus coordenadas o asignarles un identificador único. Por ejemplo, se podría asignar a cada celda del tablero una etiqueta numérica o alfabética y utilizarla para determinar qué tipo de botón se está haciendo clic.

    Una vez que se ha identificado el tipo de botón, se puede activar la acción correspondiente. Por ejemplo, para las celdas del tablero, se llevaría a cabo la acción de revelar la celda, mientras que para los botones de utilidad, se llevarían a cabo acciones como guardar el juego, reiniciar el juego o volver al menú.

    Si bien esta metodología requiere código adicional, es una solución simple y elegante que no requiere un cambio completo en el estilo del programa.

Comments are closed.