[Python|Pygame] Kolizje

Dziś poruszę temat kolizji obiektów w Pygame. Kolizje to sytuacje, w których dwa lub więcej obiektów w przestrzeni zajmuje tę samą przestrzeń lub zbliża się do siebie tworząc interakcję. W kontekście gier i programowania, kolizje są jednym z wielu aspektów określających, jak różne elementy w grze zachowują się w relacji ze sobą. Istnieje kilka możliwości wykrywania kolizji, a w tym wpisie omówimy kolizje prostokątów.

Zerknij na poniższy przykład:

import pygame
import sys

pygame.init()

width, height = 800, 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("Wykrywanie kolizji w Pygame")

color1 = (255, 0, 0)
color2 = (0, 0, 255)

rect1 = pygame.Rect(100, 100, 60, 60)
rect2 = pygame.Rect(400, 300, 60, 60)
speed = 5

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        rect1.x -= speed
    if keys[pygame.K_RIGHT]:
        rect1.x += speed
    if keys[pygame.K_UP]:
        rect1.y -= speed
    if keys[pygame.K_DOWN]:
        rect1.y += speed

    if rect1.colliderect(rect2):
        color1 = (0, 255, 0)
    else:
        color1 = (255, 0, 0)

    screen.fill((255, 255, 255))
    pygame.draw.rect(screen, color1, rect1)
    pygame.draw.rect(screen, color2, rect2)

    pygame.display.flip()
    pygame.time.Clock().tick(30)

pygame.quit()

W powyższym przykładzie stworzone zostały dwa prostokąty z różnymi pozycjami. Po poruszeniu strzałkami prostokątem rect1 możemy wprowadź go w interakcję z prostokątem rect2. W Pygame do wykrywania kolizji służy metoda colliderect klasy Rect.

Komentarze

Popular

[C++] Jak obliczyć pole i obwód trapezu?

[HTML] Jak wyśrodkować tekst?

[PHP] Jak pobrać adres strony?