Die Methode collidepoint() in Pygame

Maxim Maeder 15 Februar 2024
Die Methode collidepoint() in Pygame

Dieser Artikel zeigt, wie man mit Pygame Text in Python zeichnet. Dies ist nicht der vollständige Code für ein funktionierendes Python-Spielfenster.

Wenn Sie an einem Barebones-Arbeitsframework interessiert sind, lesen Sie diesen Artikel.

Verwenden Sie die collidepoint()-Methode in Pygame

In der Methode collidepoint() der Klasse rect testen wir, ob ein gegebener Punkt innerhalb des rect liegt. Als Nächstes erstellen wir eine Schaltfläche, die die Farbe ändert, wenn Sie mit der Maus darüber fahren.

Sie können die Funktion entweder separat mit der x- und y-Koordinate versorgen oder sie in einer iterierbaren Form wie einem Tupel oder einer Liste bereitstellen.

Syntax:

rect.collidepoint(x, y)
rect.collidepoint((x, y))

Jetzt verwenden wir collidepoint(), um die Farbe einer Oberfläche zu ändern, wenn wir darüber schweben. Wir tun die folgenden Dinge, um dies einzurichten.

  1. Beginnen Sie mit der Definition eines rect mit der Methode collidepoint().
  2. Fahren Sie fort, indem Sie eine Fläche mit der angegebenen rechten Breite und Höhe erstellen.
  3. Als letztes vor der Hauptschleife erstellen wir zwei Variablen. Eine repräsentiert die normale Farbe und eine die Hover-Farbe.
# Before Main loop
rect = pygame.Rect(10, 10, 100, 60)
btn_surface = pygame.Surface((rect.width, rect.height))

normal_color = (200, 100, 100)
hover_color = (100, 200, 100)

Wir erhalten die Mausposition in der Hauptschleife und prüfen, ob sie sich innerhalb des rect befindet.

  1. Wir erhalten die Mausposition und übergeben sie an die Methode collidepoint() des oben erstellten rect.
  2. Wenn sich herausstellt, dass die Maus oben ist, füllen wir die Schaltflächenoberfläche mit unserer Hover-Farbe. In allen anderen Fällen füllen wir es mit der normalen Farbe.
  3. Zuletzt strahlen wir die Oberfläche auf den Bildschirm.
# In the Main loop
if rect.collidepoint(pygame.mouse.get_pos()):
    btn_surface.fill(hover_color)
else:
    btn_surface.fill(normal_color)

screen.blit(btn_surface, rect)

Vollständiger Code:

# 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))

# Before Main loop
rect = pygame.Rect(10, 10, 100, 60)
print(rect.width)
btn_surface = pygame.Surface((rect.width, rect.height))

normal_color = (200, 100, 100)
hover_color = (100, 200, 100)

# Game loop.
while True:
    screen.fill((20, 20, 20))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    # In the Main loop
    if rect.collidepoint(pygame.mouse.get_pos()):
        btn_surface.fill(hover_color)
    else:
        btn_surface.fill(normal_color)

    screen.blit(btn_surface, rect)

    pygame.display.flip()
    fpsClock.tick(fps)

Ausgang:

Verwenden Sie die Methode collidepoint() in Pygame

Maxim Maeder avatar Maxim Maeder avatar

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

Verwandter Artikel - Pygame Function