¿Cómo crear botones en un juego usando PyGame?

Pygame es una biblioteca de Python que se puede usar específicamente para diseñar y crear juegos. Pygame solo admite juegos 2D creados con diferentes formas/imágenes llamadas sprites. Pygame no es particularmente mejor para diseñar juegos, ya que es muy complejo de usar y carece de una GUI adecuada como el motor de juegos Unity, pero definitivamente genera lógica para proyectos más grandes.

Instalación

Antes de inicializar la biblioteca de pygame, debemos instalarla. Esta biblioteca se puede instalar en el sistema utilizando la herramienta pip que proporciona Python para la instalación de la biblioteca. Pygame se puede instalar escribiendo estas líneas en la terminal.

pip install pygame

Creando botones interactivos usando pygame

Un juego debe tener botones interactivos que puedan controlar diferentes eventos en el juego para que el juego esté más controlado y para agregarle una GUI adecuada. Estos se pueden crear en pygame creando un rectángulo en la pantalla y luego superponiendo el texto indicador en él. Para esto, usaremos varias funciones como draw.rect(), screen.blit()etc. Para agregarle más vivacidad, podemos cambiar el color del botón cuando el mouse se desplace sobre él.

Esto se puede hacer usando una función que actualice la posición x e y del puntero del mouse y almacenándolo como una tupla en una variable. Luego, podemos establecer los límites del rectángulo en las respectivas variables y verificar si el mouse está en esos límites, de ser así, el color del bloque cambiará a un tono más claro para indicar que se puede interactuar con el botón.

A continuación se muestra la implementación.

import pygame
import sys
  
  
# initializing the constructor
pygame.init()
  
# screen resolution
res = (720,720)
  
# opens up a window
screen = pygame.display.set_mode(res)
  
# white color
color = (255,255,255)
  
# light shade of the button
color_light = (170,170,170)
  
# dark shade of the button
color_dark = (100,100,100)
  
# stores the width of the
# screen into a variable
width = screen.get_width()
  
# stores the height of the
# screen into a variable
height = screen.get_height()
  
# defining a font
smallfont = pygame.font.SysFont('Corbel',35)
  
# rendering a text written in
# this font
text = smallfont.render('quit' , True , color)
  
while True:
      
    for ev in pygame.event.get():
          
        if ev.type == pygame.QUIT:
            pygame.quit()
              
        #checks if a mouse is clicked
        if ev.type == pygame.MOUSEBUTTONDOWN:
              
            #if the mouse is clicked on the
            # button the game is terminated
            if width/2 <= mouse[0] <= width/2+140 and height/2 <= mouse[1] <= height/2+40:
                pygame.quit()
                  
    # fills the screen with a color
    screen.fill((60,25,60))
      
    # stores the (x,y) coordinates into
    # the variable as a tuple
    mouse = pygame.mouse.get_pos()
      
    # if mouse is hovered on a button it
    # changes to lighter shade 
    if width/2 <= mouse[0] <= width/2+140 and height/2 <= mouse[1] <= height/2+40:
        pygame.draw.rect(screen,color_light,[width/2,height/2,140,40])
          
    else:
        pygame.draw.rect(screen,color_dark,[width/2,height/2,140,40])
      
    # superimposing the text onto our button
    screen.blit(text , (width/2+50,height/2))
      
    # updates the frames of the game
    pygame.display.update()

Producción:

create-button-pygame-python

Publicación traducida automáticamente

Artículo escrito por antrikshmisri y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *