surface.blit() Funktion in Pygame
Dieses Tutorial zeigt Ihnen, was die Funktion blit()
in Pygame macht.
Der hier angezeigte Code ist nicht der vollständige Code für ein gültiges Pygame-Fenster. Wenn Sie an einem Bare-Bones-Framework interessiert sind, lesen Sie diesen Artikel.
die Funktion surface.blit()
in Pygame
Pygame dreht sich um Flächen, und die Funktion blit()
überlappt diese Flächen. Das prominenteste Beispiel dafür wäre unser Bildschirm, der im Wesentlichen nur eine Oberfläche ist, und wir leuchten alle Dinge, die wir sehen, darauf.
Wir können aber auch andere Flächen erzeugen und diese mit blit()
überlagern. Bevor wir dies tun, werden wir die verschiedenen Argumente erläutern, die wir an diese Methode übergeben können.
Später sehen wir uns ein konkretes Beispiel an, konzentrieren uns aber vorerst auf die Funktion.
Unten sehen Sie die Struktur der Methode blit()
. Denken Sie daran, dass dieser Code nicht funktioniert, da wir die Oberflächen nicht eingerichtet haben.
Wir rufen die Funktion blit()
auf einer Oberfläche auf und beginnen mit der Bereitstellung der überlagerten Oberfläche. Dann legen wir fest, wo oben links von surfaceTwo
auf surfaceOne
sein wird.
Wir könnten es hier beenden, und blit()
würde funktionieren, aber wir können zwei weitere Argumente übergeben. Die Fläche ist ein rect
, das die Fläche von surfaceTwo
darstellt, die geblittet wird.
Mit nur einem Teil davon und den special_flags
können wir also den Mischmodus des Blits definieren.
Code-Auszug:
surfaceOne.blit(surfaceTwo, destination, area=none, special_flags=none)
Verwenden Sie die Funktion surface.blit()
in Pygame
Nun schauen wir uns ein konkretes Beispiel an. Beginnen wir damit, einige Oberflächen zu erstellen; Denken Sie daran, dass sich dieser Code vor der Hauptschleife befindet.
Wir können neue Oberflächen mit der Methode Surface()
erstellen, bei der wir die gewünschten Abmessungen angeben müssen. Wir füllen auch beide Flächen mit einer Farbe, um sie später zu sehen.
In den letzten fünf Zeilen des Codes sehen Sie die Funktion blit()
in Aktion.
Code-Auszug:
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])
Jetzt brauchen wir nur noch surfaceOne
auf den Bildschirm zu blitten und schon sehen wir das Ergebnis. Dieser Code passiert in der Hauptschleife.
screen.blit(surfaceOne, [10, 10])
Ausgang:
Vollständiger Beispielcode
# 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