Función surface.blit() en Pygame
Este tutorial te enseña lo que hace la función blit()
en Pygame.
El código que se muestra aquí no es el código completo para una ventana de Pygame válida. Si está interesado en un marco básico, consulte este artículo.
la función surface.blit()
en Pygame
Pygame gira en torno a las superficies, y la función blit()
se superpone a estas superficies. El ejemplo más destacado de esto sería nuestra pantalla, que es esencialmente solo una superficie, y proyectamos todas las cosas que vemos en ella.
Pero también podemos crear otras superficies y superponerlas con blit()
. Antes de hacer esto, explicaremos los diferentes argumentos que podemos pasar a este método.
Más adelante, veremos un ejemplo concreto, pero por ahora nos centraremos en la función.
A continuación puedes ver la estructura del método blit()
. Recuerde que este código no funcionará porque no configuramos las superficies.
Llamamos a la función blit()
en una superficie y comenzamos proporcionando la superficie superpuesta. Luego especificamos dónde estará la parte superior izquierda de surfaceTwo
en surfaceOne
.
Podríamos terminar aquí, y blit()
funcionaría, pero podemos pasar dos argumentos más. El área es un rect
que representa el área de surfaceTwo
que se borrará.
Entonces, con solo una parte de él y los special_flags
, podemos definir el modo de fusión del blit.
Fragmento de código:
surfaceOne.blit(surfaceTwo, destination, area=none, special_flags=none)
Usa la función surface.blit()
en Pygame
Ahora, veremos un ejemplo concreto. Comencemos por hacer algunas superficies; tenga en cuenta que este código está antes del ciclo principal.
Podemos hacer nuevas superficies con el método Surface()
, en el que tenemos que proporcionar las dimensiones deseadas. También rellenamos ambas superficies con un color para verlos después.
En las últimas cinco líneas del código, verás la función blit()
en acción.
Fragmento de código:
surfaceOne = pygame.Surface((100, 100))
surfaceOne.fill(
(
200,
100,
100,
)
)
surfaceTwo = pygame.Surface((30, 30))
surfaceTwo.fill(
(
100,
200,
100,
)
)
surfaceOne.blit(surfaceTwo, [10, 10], [0, 0, 10, 5])
Ahora, solo necesitamos mostrar surfaceOne
en la pantalla y veremos el resultado. Este código ocurre en el ciclo principal.
screen.blit(surfaceOne, [10, 10])
Producción:
Código de ejemplo completo
# Imports
import sys
import pygame
# Configuration
pygame.init()
fps = 60
fpsClock = pygame.time.Clock()
width, height = 640, 480
screen = pygame.display.set_mode((width, height), pygame.RESIZABLE)
surfaceOne = pygame.Surface((100, 100))
surfaceOne.fill(
(
200,
100,
100,
)
)
surfaceTwo = pygame.Surface((30, 30))
surfaceTwo.fill(
(
100,
200,
100,
)
)
surfaceOne.blit(surfaceTwo, [10, 10], [0, 0, 10, 5])
# Game loop.
while True:
screen.fill((20, 20, 20))
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
screen.blit(surfaceOne, [10, 10])
pygame.display.flip()
fpsClock.tick(fps)
Hi, my name is Maxim Maeder, I am a young programming enthusiast looking to have fun coding and teaching you some things about programming.
GitHub