pygame
Zeichnen auf dem Bildschirm
Suche…
Zeichnen von Formen, Text und Bildern auf dem Bildschirm mit einer kleinen Animation
Dieses Programm zeichnet einige Formen auf das Display und zeichnet "Hallo Welt!" in der Mitte des Bildschirms und lassen Sie ein Bild in jede Ecke des Fensters. Sie können jedes Bild verwenden, das Sie möchten, aber Sie müssen die Bilddatei in demselben Verzeichnis wie Ihr Programm ablegen.
der gesamte Code:
import pygame, sys
from pygame.locals import *
pygame.init()
FPS = 30 #frames per second setting
fpsClock = pygame.time.Clock()
#set up the window
screen = pygame.display.set_mode((400, 300), 0, 32)
pygame.display.set_caption('animation')
#set up the colors
white = (255, 255, 255)
black = ( 0, 0, 0)
green = (0, 255, 0)
blue = (0, 0, 180)
red = (255, 0, 0)
image = pygame.image.load('image.png')
imagex = 360
imagey = 260
direction = 'left'
# text setting
font_obj = pygame.font.Font('freesansbold.ttf', 32)
text_surface_obj = font_obj.render('Hello World!', True, GREEN, BLUE)
text_rect_obj = text_surface_obj.get_rect()
text_rectObj.center = (200, 150)
while True: # the main game loop
screen.fill(WHITE)
# draw a green polygon onto the surface
pygame.draw.polygon(screen, green, ((146, 0), (291, 106), (236, 277), (56, 277), (0, 106)))
# draw some blue lines onto the surface
pygame.draw.line(screen, blue, (60, 60), (120, 60), 4)
pygame.draw.line(screen, blue, (120, 60), (60, 120))
pygame.draw.line(screen, blue, (60, 120), (120, 120), 4)
# draw a blue circle onto the surface
pygame.draw.circle(screen, blue, (300, 50), 20, 0)
# draw a red ellipse onto the surface
pygame.draw.ellipse(screen, red, (100, 150, 40,80), 1)
# draw a red rectangle onto the surface
pygame.draw.rect(screen,red, (200, 150, 100, 50))
# draw the text onto the surface
screen.blit(text_surface_obj, text_rect_obj)
#the animation of the image
if direction == 'right':
imagex += 5
if imagex == 360:
direction = 'down'
elif direction == 'down':
imagey += 5
if imagey == 260:
direction = 'left'
elif direction == 'left':
imagex -= 5
if imagex == 20:
direction = 'up'
elif direction == 'up':
imagey -= 5
if imagey == 20:
direction = 'right'
screen.blit(image, (imagex, imagey))
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
fpsClock.tick(FPS)
den weißen Hintergrund zeichnen:
screen.fill(white)
Zeichnen des Polygons:
In dieser Funktion definieren Sie die Anzeigeoberfläche, die Farbe und die Position jeder Ecke des Polygons. Dies kann im Uhrzeigersinn und gegen den Uhrzeigersinn erfolgen.
pygame.draw.polygon(screen, green, ((146, 0), (291, 106), (236, 277), (56, 277), (0, 106)))
Linien zeichnen:
Hier definieren Sie die Anzeigeoberfläche, die Farbe, den ersten und den letzten Punkt sowie die Breite der Linie.
pygame.draw.line(screen, blue, (60, 60), (120, 60), 4)
pygame.draw.line(screen, blue, (120, 60), (60, 120))
pygame.draw.line(screen, blue, (60, 120), (120, 120), 4)
den Kreis zeichnen:
In dieser Funktion definieren Sie die Anzeigefläche, die Farbe, die Position, den Radius und die Breite des Kreises (0 ergibt einen einfachen Kreis).
pygame.draw.circle(screen, blue, (300, 50), 20, 0)
Zeichnen der Ellipse:
In dieser Funktion definieren Sie die Anzeigeoberfläche, die Farbe, die Position, die horizontale Größe, die vertikale Größe und die Breite der Ellipse
pygame.draw.ellipse(screen, red, (100, 150, 40,80), 1)
Zeichnen des Rechtecks:
In dieser Funktion definieren Sie die Anzeigeoberfläche, die Farbe, die Position sowie die vertikale und horizontale Größe des Rechtecks.
pygame.draw.rect(screen,red, (200, 150, 100, 50))
Definieren des Textes:
Zuerst definieren Sie den Typ und die Größe Ihres Textes. Ich verwende eine grundlegende Schriftart, die Sie mit Pygame erhalten.
font_obj = pygame.font.Font('freesansbold.ttf', 32)
Dann definieren Sie den tatsächlichen Text, ob Sie ihn fett oder nicht (True / False) möchten, die Farbe des Textes und, wenn Sie Ihren Text markieren möchten, eine Farbe der Markierung.
text_surface_obj = font_obj.render('Hello World!', True, green, blue)
Wenn Sie Ihren Text markieren oder die Textmitte definieren möchten, müssen Sie pygame dies mit dieser Funktion mitteilen:
text_rect_obj = text_surface_obj.get_rect()
Danach können Sie mit dieser Funktion die Mitte Ihres Textes festlegen:
text_rect_obj.center = (200, 150)
den Text zeichnen:
Wenn Sie Ihren Text markiert oder die Mitte definiert haben, müssen Sie den Text folgendermaßen zeichnen:
screen.blit(text_surface_obj, text_rectObj)
Ansonsten zeichnen Sie Ihren Text, aber Sie müssen die Position definieren, so dass Sie dies folgendermaßen tun:
DISPLAYSURF.blit(textSurfaceObj, (100,50))
das bild definieren:
Hier definieren Sie das Bild, das Sie verwenden möchten, die Startposition (X- und Y-Koordinaten) und die Richtung des Bildes.
image = pygame.image.load('image.png')
imagex = 360
imagey = 260
direction = 'left'
das Bild animieren:
Hier überprüfen Sie die Richtung des Bildes, wenn es eine Ecke erreicht hat, ändern Sie die Richtung, wenn nicht, verschieben Sie es um 5 Pixel in die gleiche Richtung und zeichnen Sie das Bild erneut. Das machen wir mit diesem Teil des Codes:
if direction == 'right':
imagex += 5
if imagex == 360:
direction = 'down'
elif direction == 'down':
imagey += 5
if imagey == 260:
direction = 'left'
elif direction == 'left':
imagex -= 5
if imagex == 20:
direction = 'up'
elif direction == 'up':
imagey -= 5
if imagey == 20:
direction = 'right'
screen.blit(image, (imagex, imagey))
Hinweis: Mein Bild ist 20 mal 20 Pixel if imagex == 360
, ich habe es verwendet, if imagex == 360
und if imagey == 260:
da dann mein Bild 20 Pixel vom Rand entfernt ist und wenn das Bild eine andere Größe hat, müssen Sie die Zahlen ändern .
Überprüfen Sie, ob Sie das Programm beenden:
Hier überprüfen wir, ob Sie das Fenster Ihres Programms geschlossen haben.
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
Aktualisierung der Anzeige:
Hier weisen Sie pygame an, die Anzeige so zu aktualisieren, dass alles, was Sie gezeichnet haben, auf dem Bildschirm angezeigt wird.
pygame.display.update()
Definieren der Frames pro Sekunde:
Hier sagen Sie Pygame, dass Sie genug schlafen sollten, damit die Frames pro Sekunde berücksichtigt werden.
fpsClock.tick(FPS)