Pygame – Dibujar objetos y formas

En este artículo vamos a ver cómo dibujar un objeto usando Pygame. Puede haber dos versiones para dibujar cualquier forma, puede ser una sólida o simplemente un contorno de la misma.

Dibujar objetos y formas en PyGame

Puede dibujar fácilmente formas básicas en pygame utilizando el método de dibujo de pygame. 

Dibujo Forma de rectángulo: 

Para dibujar un rectángulo en su proyecto Pygame, puede usar la función draw.rect().

Sintaxis: pygame.draw.rect(superficie, color, rect, ancho)

Parámetros:

  • superficie :- Aquí podemos pasar la superficie sobre la que queremos dibujar nuestro rectángulo. En el ejemplo anterior, creamos un objeto de superficie llamado ‘ventana’.
  • color :- Aquí podemos pasar el color de nuestro rectángulo. Estamos usando el color azul en nuestro ejemplo.
  • rect :- Aquí podemos pasar el rectángulo, la posición y las dimensiones.
  • ancho :- Aquí podemos pasar el grosor de la línea. también podemos crear un rectángulo sólido cambiando el valor de este parámetro de ancho. Así que echemos un vistazo a eso.

Primero, importe el módulo requerido e inicialice pygame. Ahora, cree el objeto de superficie de una dimensión específica usando el método display.set_mode() de pygame. Rellene el fondo del objeto de la superficie con color blanco usando la función fill() de pygame. Crea un rectángulo usando el método draw.rect() de pygame. Actualice el objeto de superficie.

Ejemplo 1: dibujar un rectángulo delineado usando pygame.

Python3

# Importing pygame module
import pygame
from pygame.locals import *
 
# initiate pygame and give permission
# to use pygame's functionality.
pygame.init()
 
# create the display surface object
# of specific dimension.
window = pygame.display.set_mode((600, 600))
 
# Fill the scree with white color
window.fill((255, 255, 255))
 
# Using draw.rect module of
# pygame to draw the outlined rectangle
pygame.draw.rect(window, (0, 0, 255),
                 [100, 100, 400, 100], 2)
 
# Draws the surface object to the screen.
pygame.display.update()

Producción :

Podemos crear un rectángulo sólido estableciendo el parámetro de ancho igual a 0 y el resto del enfoque sigue siendo el mismo.

Ejemplo 2: Dibujar un rectángulo sólido.

Python3

# Importing pygame module
import pygame
from pygame.locals import *
 
# initiate pygame and give permission
# to use pygame's functionality.
pygame.init()
 
# create the display surface object
# of specific dimension.
window = pygame.display.set_mode((600, 600))
 
# Fill the scree with white color
window.fill((255, 255, 255))
 
# Using draw.rect module of
# pygame to draw the solid rectangle
pygame.draw.rect(window, (0,   0, 255),
                 [100, 100, 400, 100], 0)
 
# Draws the surface object to the screen.
pygame.display.update()

Producción :

Forma de círculo de dibujo:

Para dibujar un círculo en su proyecto Pygame, puede usar la función draw.circle(). Todo el enfoque es el mismo que el anterior, solo la función y los parámetros se cambian en consecuencia.

Sintaxis: pygame.draw.circle (superficie, color, centro, radio, ancho)

Parámetros:

  • superficie :- Aquí podemos pasar la superficie sobre la que queremos dibujar nuestro círculo. En el ejemplo anterior, creamos un objeto de superficie llamado ‘ventana’.
  • color :- Aquí podemos pasar el color de nuestro círculo. Estamos usando el color verde en nuestro ejemplo.
  • center :- Aquí podemos pasar las coordenadas (x, y) para el centro del círculo.
  • radio :- Aquí podemos pasar el radio de nuestro círculo.
  • ancho :- Aquí podemos pasar el grosor de la línea. también podemos crear un círculo sólido cambiando el valor de este parámetro de ancho. Así que echemos un vistazo a eso.

Ejemplo 1: Dibujar un círculo hueco.

Python3

# Importing pygame module
import pygame
from pygame.locals import *
 
# initiate pygame and give permission
# to use pygame's functionality.
pygame.init()
 
# create the display surface object
# of specific dimension.
window = pygame.display.set_mode((600, 600))
 
# Fill the scree with white color
window.fill((255, 255, 255))
 
# Using draw.rect module of
# pygame to draw the solid circle
pygame.draw.circle(window, (0, 255, 0),
                   [300, 300], 170, 3)
 
# Draws the surface object to the screen.
pygame.display.update()

Producción :

Podemos crear un círculo sólido estableciendo el parámetro de ancho igual a 0. 

Ejemplo 2: dibujar un círculo sólido

Python3

# Importing pygame module
import pygame
from pygame.locals import *
 
# initiate pygame and give permission
# to use pygame's functionality.
pygame.init()
 
# create the display surface object
# of specific dimension.
window = pygame.display.set_mode((600, 600))
 
# Fill the scree with white color
window.fill((255, 255, 255))
 
# Using draw.rect module of
# pygame to draw the solid circle
pygame.draw.circle(window, (0, 255, 0),
                   [300, 300], 170, 0)
 
# Draws the surface object to the screen.
pygame.display.update()

Producción :

De manera similar, puede dibujar otras formas básicas utilizando el módulo de dibujo de pygame. 

Dibujar forma de polígono:

El polígono deseado se puede dibujar usando la función polígono(). 

Sintaxis: polígono (superficie, color, puntos, ancho)

Nuevamente, el enfoque sigue siendo el mismo, solo cambian la función y los parámetros.

Ejemplo 1: dibujar un polígono sólido

Python3

# Importing pygame module
import pygame
from pygame.locals import *
 
# initiate pygame and give permission
# to use pygame's functionality.
pygame.init()
 
# create the display surface object
# of specific dimension.
window = pygame.display.set_mode((600, 600))
 
# Fill the scree with white color
window.fill((255, 255, 255))
 
# Using draw.rect module of
# pygame to draw the outlined polygon
pygame.draw.polygon(window, (255, 0, 0),
                    [[300, 300], [100, 400],
                     [100, 300]])
 
# Draws the surface object to the screen.
pygame.display.update()

Producción :

Ejemplo 2: dibujar un polígono hueco

Python3

# Importing pygame module
import pygame
from pygame.locals import *
 
# initiate pygame and give permission
# to use pygame's functionality.
pygame.init()
 
# create the display surface object
# of specific dimension.
window = pygame.display.set_mode((600, 600))
 
# Fill the scree with white color
window.fill((255, 255, 255))
 
# Using draw.rect module of
# pygame to draw the outlined polygon
pygame.draw.polygon(window, (255, 0, 0),
                    [[300, 300], [100, 400],
                     [100, 300]], 5)
 
# Draws the surface object to the screen.
pygame.display.update()

Producción:

Forma de línea de dibujo:

Una línea es la entidad de dibujo más básica y se puede dibujar en pygame usando la función line().

Sintaxis: pygame.draw.line (superficie, color, start_pos, end_pos, ancho)

Ejemplo 1: dibujar una línea

Python3

# Importing pygame module
import pygame
from pygame.locals import *
 
# initiate pygame and give permission
# to use pygame's functionality.
pygame.init()
 
# create the display surface object
# of specific dimension.
window = pygame.display.set_mode((600, 600))
 
# Fill the scree with white color
window.fill((255, 255, 255))
 
# Using draw.rect module of
# pygame to draw the line
pygame.draw.line(window, (0, 0, 0),
                 [100, 300],
                 [500, 300], 5)
 
# Draws the surface object to the screen.
pygame.display.update()

Producción:

Dibuja múltiples formas:

Puede dibujar varias formas en el mismo objeto de superficie. Para eso, se importan los primeros módulos requeridos y se inicializa pygame. Ahora, cree el objeto de superficie de una dimensión específica usando el método display.set_mode() de pygame. Rellene el fondo del objeto de la superficie con color blanco usando la función fill() de pygame. Cree las formas requeridas que se describen arriba. Actualizar el objeto de superficie

Ejemplo 1: Dibujar un círculo dentro de un rectángulo.

Python3

# Importing pygame module
import pygame
from pygame.locals import *
 
# initiate pygame and give permission
# to use pygame's functionality.
pygame.init()
 
# create the display surface object
# of specific dimension.
window = pygame.display.set_mode((600, 600))
 
# Fill the scree with white color
window.fill((255, 255, 255))
 
# Using draw.rect module of
# pygame to draw the rectangle
pygame.draw.rect(window, (0, 0, 255),
                 [50, 200, 500, 200])
 
# Using draw.rect module of
# pygame to draw the circle inside the rectangle
pygame.draw.circle(window, (0, 255, 0),
                   [300, 300], 100)
 
# Draws the surface object to the screen.
pygame.display.update()

Producción:

Ejemplo 2: Dibujar rectángulos uno dentro de otro.

Python3

# Importing pygame module
import pygame
from pygame.locals import *
 
# initiate pygame and give permission
# to use pygame's functionality.
pygame.init()
 
# create the display surface object
# of specific dimension.
window = pygame.display.set_mode((600, 600))
 
# Fill the scree with white color
window.fill((255, 255, 255))
 
# Creating a list of different rects
rectangle_list = [pygame.Rect(50, 100, 500, 200),
                  pygame.Rect(70, 120, 460, 160),
                  pygame.Rect(90, 140, 420, 120),
                  pygame.Rect(110, 160, 380, 80),
                  pygame.Rect(130, 180, 340, 40)
                  ]
 
# Creating list of different colors
color_list = [(0,   0,   0),
              (255, 255, 255),
              (0,   0, 255),
              (0, 255,   0),
              (255,   0,   0)
              ]
 
# Creating a variable which we will use
# to iterate over the color_list
color_var = 0
 
# Iterating over the rectangle_list using
# for loop
for rectangle in rectangle_list:
 
    # Drawing the rectangle
    # using the draw.rect() method
    pygame.draw.rect(window, color_list[color_var],
                     rectangle)
 
    # Increasing the value of color_var
    # by 1 after every iteration
    color_var += 1
 
# Draws the surface object to the screen.
pygame.display.update()

Producción :

Escribir sus propias funciones de dibujo:

Puede crear fácilmente sus propias funciones de dibujo especializadas en pygame. 

Esto se puede hacer siguiendo el procedimiento dado. Cree una función de dibujo que tomará la posición inicial, el ancho y la altura como parámetros. Dibuje las formas requeridas que se describen arriba. Llame a la función dibujar()

Python3

# Importing pygame module
import pygame
from pygame.locals import *
 
# Creating Drawing function
 
 
def drawingfunction(x, y, width, height):
 
    # Creating rectangle using the draw.rect() method
    pygame.draw.rect(window, (0, 0, 255), [x, y, width, height])
 
    # Calculation the center of the circle
    circle_x = width/2 + x
    circle_y = height/2 + y
 
    # Calculating the radius of the circle
    if height < width:
        radius = height/2
    else:
        radius = width/2
 
    # Drawing the circle
    pygame.draw.circle(window, (0, 255, 0), [circle_x, circle_y], radius)
 
 
# initiate pygame and give permission
# to use pygame's functionality.
pygame.init()
 
# create the display surface object
# of specific dimension.
window = pygame.display.set_mode((600, 600))
 
# Fill the scree with white color
window.fill((255, 255, 255))
 
# Calling the drawing function
drawingfunction(50, 200, 500, 200)
 
# Draws the surface object to the screen.
pygame.display.update()

Producción:

Dibujar formas con el ratón:

Ahora veamos cómo podemos crear formas cada vez que el usuario hace clic con el mouse. Vamos a crear círculos en el siguiente ejemplo, pero puede crear cualquier forma que desee.

Cree una lista para almacenar la posición de la forma que se va a dibujar. Cree una variable para almacenar el color de la forma. Cree una variable que usaremos para ejecutar el bucle while y Crear un bucle while. Iterar sobre todos los eventos recibidos de pygame.event.get(). Si el tipo de evento se cierra, se establece la variable de ejecución en falso. Si el tipo de evento es MOUSEBUTTONDOWN (este evento ocurre cuando un usuario presiona el botón del mouse), entonces obtiene la posición actual en una variable y luego agrega esa posición en nuestra lista de posiciones_del_círculo. Iterar sobre todas las posiciones de la array creada usando un bucle for a. Sigue dibujando la forma. Actualice el objeto de superficie.

Python3

# Importing pygame module
import pygame
from pygame.locals import *
 
# initiate pygame and give permission
# to use pygame's functionality.
pygame.init()
 
# create the display surface object
# of specific dimension.
window = pygame.display.set_mode((600, 600))
 
# Fill the scree with white color
window.fill((255, 255, 255))
 
# creating list in which we will store
# the position of the circle
circle_positions = []
 
# radius of the circle
circle_radius = 60
 
# Color of the circle
color = (0, 0, 255)
 
# Creating a variable which we will use
# to run the while loop
run = True
 
# Creating a while loop
while run:
 
    # Iterating over all the events received from
    # pygame.event.get()
    for event in pygame.event.get():
 
        # If the type of the event is quit
        # then setting the run variable to false
        if event.type == QUIT:
            run = False
 
        # if the type of the event is MOUSEBUTTONDOWN
        # then storing the current position
        elif event.type == MOUSEBUTTONDOWN:
            position = event.pos
            circle_positions.append(position)
             
    # Using for loop to iterate
    # over the circle_positions
    # list
    for position in circle_positions:
 
        # Drawing the circle
        pygame.draw.circle(window, color, position,
                           circle_radius)
 
    # Draws the surface object to the screen.
    pygame.display.update()

Producción:

Publicación traducida automáticamente

Artículo escrito por imranalam21510 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 *