📜  pygame 检查碰撞 - Python (1)

📅  最后修改于: 2023-12-03 14:45:43.675000             🧑  作者: Mango

Pygame 检查碰撞 - Python

在Pygame中,可以使用colliderect()collidecircle()等函数来检查游戏中的碰撞。以下是如何使用这些函数的示例。

colliderect()

colliderect()函数检查两个矩形是否相交。

rect1 = pygame.Rect(x1, y1, width1, height1)
rect2 = pygame.Rect(x2, y2, width2, height2)

if rect1.colliderect(rect2):
    # 碰撞处理代码
collidecircle()

collidecircle()函数检查两个圆形是否相交。

circle1 = pygame.draw.circle(screen, color1, (x1, y1), radius1)
circle2 = pygame.draw.circle(screen, color2, (x2, y2), radius2)

if circle1.colliderect(circle2):
    # 碰撞处理代码
完整代码示例
import pygame

pygame.init()

# 设置窗口尺寸
screen_width = 640
screen_height = 480
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("碰撞检测示例")

# 颜色定义
white = (255, 255, 255)
red = (255, 0, 0)

# 两个矩形
rect1 = pygame.Rect(50, 50, 100, 100)
rect2 = pygame.Rect(80, 80, 100, 100)

# 两个圆形
circle1 = pygame.draw.circle(screen, red, (200, 200), 50)
circle2 = pygame.draw.circle(screen, white, (400, 400), 50)

while True:
    # 监听事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()

    # 检测两个矩形是否相交
    if rect1.colliderect(rect2):
        rect1 = rect1.move(10, 10)

    # 检测两个圆形是否相交
    if circle1.colliderect(circle2):
        circle1.move_ip(10,10)

    # 绘制图形
    screen.fill((0, 0, 0))
    pygame.draw.rect(screen, white, rect1)
    pygame.draw.rect(screen, red, rect2)
    pygame.draw.circle(screen, red, circle1.center, circle1.radius)
    pygame.draw.circle(screen, white, circle2.center, circle2.radius)

    # 更新窗口
    pygame.display.update()

以上是如何使用colliderect()collidecircle()函数检测碰撞的示例。在实际游戏开发中,根据需要选择适当的函数来检测碰撞,以实现更加高效的游戏代码。