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.

Estoy repitiendo continuamente código y me pregunto si hay una manera de simplificar estas declaraciones if.

El código que he creado se utiliza en Pygame para resaltar los botones sobre los que estoy pasando el cursor y, cuando se hace clic en ellos, se activa su función correspondiente.

if singleplayer_button.collidepoint(mx, my):
    pygame.draw.rect(WIN, (180, 0, 0), singleplayer_button)
    WIN.blit(singleplayer_button_text, (295, 400))
    if click:
        singleplayer()
else:
    pygame.draw.rect(WIN, RED, singleplayer_button)
    WIN.blit(singleplayer_button_text, (295, 400))

if multiplayer_button.collidepoint(mx, my):
    pygame.draw.rect(WIN, (180, 0, 0), multiplayer_button)
    WIN.blit(multiplayer_button_text, (727, 400))
    if click:
        multiplayer1()
else:
    pygame.draw.rect(WIN, RED, multiplayer_button)
    WIN.blit(multiplayer_button_text, (727, 400))

if leaderboard_button.collidepoint(mx, my):
    pygame.draw.rect(WIN, (180, 0, 0), leaderboard_button)
    WIN.blit(leaderboard_button_text, (291, 550))
    if click:
        leaderboard()
else:
    pygame.draw.rect(WIN, RED, leaderboard_button)
    WIN.blit(leaderboard_button_text, (291, 550))

if credit_button.collidepoint(mx, my):
    pygame.draw.rect(WIN, (180, 0, 0), credit_button)
    WIN.blit(credits_button_text, (774, 550))
    if click:
        credit()
else:
    pygame.draw.rect(WIN, RED, credit_button)
    WIN.blit(credits_button_text, (774, 550))

if register_button.collidepoint(mx, my):
    pygame.draw.rect(WIN, (180, 0, 0), register_button)
    WIN.blit(register_button_text, (300, 700))
    if click:
        register()
else:
    pygame.draw.rect(WIN, RED, register_button)
    WIN.blit(register_button_text, (300, 700))

if exit_button.collidepoint(mx, my):
    pygame.draw.rect(WIN, (180, 0, 0), exit_button)
    WIN.blit(exit_button_text, (737, 700))
    if click:
        exit_window()
else:
    pygame.draw.rect(WIN, RED, exit_button)
    WIN.blit(exit_button_text, (737, 700))

_button es un rectángulo

buttontext es texto que se blittea encima del rectángulo.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Explicación:

    El código está escrito en Python utilizando la librería pygame. Define un número de rectángulos de botón utilizando el método collidepoint para verificar si el ratón está sobre el botón. Si el ratón está sobre un botón, el color del botón cambia a un tono más claro de rojo y se blittea el texto del botón correspondiente encima de él. Cuando el usuario hace clic en un botón, se activa la función correspondiente. De lo contrario, el color del botón permanece ROJO y muestra el texto de botón predeterminado.

    El método “collidepoint” verifica si un punto (mx, my) está dentro de un rectángulo dado. Si esta condición es verdadera, el código cambia el color del botón a (180, 0, 0), blittea el texto del botón, y verifica si se hace clic en el botón. Si se hace clic en el botón, se llama a la función correspondiente. Si el ratón no está sobre el botón, se dibuja el botón en ROJO, y se muestra el texto de botón predeterminado.

    El código se utiliza para crear una interfaz gráfica de usuario básica, que se puede utilizar como punto de partida para aplicaciones más complejas. Esta implementación es adecuada para aplicaciones de pequeña escala como un menú de juego o algún Panel de Control GUI para automatizar tareas.

Comments are closed.