最近自己写了个pygame的碰撞检测,但是似乎出了BUG,求解决 代码如下: import pygame
from pygame.locals import *
import sys
import random
pygame.init()
screen = pygame.display.set_mode((1000, 700))
class Ball1(pygame.sprite.Sprite):
def __init__(self, image, position, speed):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load(image)
self.rect = self.image.get_rect()
self.rect.left, self.rect.top = position
self.speed = speed
def move(self):
self.rect.left += speed[0]
self.rect.top += speed[1]
if self.rect.left <= 0 or self.rect.right >= 1000:
speed[0] = -speed[0]
if self.rect.top <= 0 or self.rect.bottom >= 700:
speed[1] = -speed[1]
class Ball2(pygame.sprite.Sprite):
def __init__(self, image, position, speed):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load(image)
self.rect = self.image.get_rect()
self.rect.left, self.rect.top = position
self.speed = speed
def move(self):
self.rect.left += speed2[0]
self.rect.top += speed2[1]
if self.rect.left <= 0 or self.rect.right >= 1000:
speed2[0] = -speed2[0]
if self.rect.top <= 0 or self.rect.bottom >= 700:
speed2[1] = -speed2[1]
image1 = "ball1.png"
image2 = "ball2.png"
position = [random.randint(0, 600), random.randint(0, 500)]
position2 = [random.randint(0, 600), random.randint(0, 500)]
speed = [5, 5]
speed2 = [5, 5]
ball1 = Ball1(image1, position, speed)
ball2 = Ball2(image2, position2, speed2)
if pygame.sprite.collide_rect(ball1, ball2):
print("已发生碰撞")
clock = pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
screen.fill((200, 200, 200))
screen.blit(ball1.image, ball1.rect)
screen.blit(ball2.image, ball2.rect)
ball1.move()
ball2.move()
clock.tick(90)
pygame.display.flip() 主要问题:无法检测碰撞
|