Столкновение прямоугольников друг с другомPython

Программы на Python
Гость
Столкновение прямоугольников друг с другом

Сообщение Гость »


В настоящее время я пытаюсь создать игру в понг, но по какой-то причине мяч не отскакивает от прямоугольников, и я не уверен, где я допустил ошибку, хотя я смотрел онлайн-видео о столкновении прямоугольников. Пожалуйста, дайте мне знать, где я допустил ошибку и как я могу улучшить свой код. Спасибо!
импортировать pygame, sys, случайное время, время из pygame.time импортировать часы pygame.init() #цвета черный = ( 0, 0, 0) белый = (255, 255, 255) зеленый = (0, 255, 0) красный = (255, 0, 0) # Отображать ширина_экрана = 1000 screen_height = 600 экран = pygame.display.set_mode((ширина_экрана, высота_экрана)) pygame.display.set_caption("Понг для 2 игроков") # Прямоугольники класс Прямоугольник(): def __init__(self, screen, x): self.screen = экран self.screen_rect= screen.get_rect() self.x = x self.y = 250 собственная ширина = 30 self.height = 100 self.rect = pygame.Rect(self.x, self.y, self.width, self.height) self.color = черный собственная скорость = 5 защита draw_rectangle (сам): pygame.draw.rect(self.screen, self.color, self.rect) rect1 = Прямоугольник (экран, 50) rect2 = Прямоугольник (экран, 920) класс Шар(): def __init__(self, цвет): self.screen = экран self.color = цвет собственная ширина = 20 self.height = 20 self.x = ширина_экрана//2 - 25 self.y = screen_height//2 - 25 self.rect = pygame.Rect(self.x, self.y, self.width, self.height) self.possible_velocities_x = [-4, 4] self.possible_velocities_y = [-2, 2] self.velocity = [random.choice(self.possible_velocities_x), random.choice(self.possible_velocities_y)] защита draw_ball(сам): pygame.draw.rect(self.screen, self.color, self.rect) защита move_ball (сам): глобальный прямоугольник 1, прямоугольник 2 self.rect.x += self.velocity[0] self.rect.y += self.velocity[1] # Столкновение с экраном если self.rect.top = screen_height - 10: self.velocity[1] *= -1 # Столкновение с прямоугольниками если self.rect.colliderect(rect1) или self.rect.colliderect(rect2): если self.rect.left - rect1.rect.right == 0: self.possible_velocities_x *= -1 если self.rect.right - rect2.rect.left == 0: self.possible_velocities_x *= -1 часы = pygame.time.Clock() мяч = Шар (белый) понг = Правда пока понг: pygame.time.delay(10) часы.тик(100) # Следите за событиями клавиатуры и мыши. для события в pygame.event.get(): если event.type == pygame.QUIT: понг = Ложь ключи = pygame.key.get_pressed() если ключи[pygame.K_UP] и rect2.rect.y >= 0: rect2.rect.y -= rect2.скорость если ключи[pygame.K_DOWN] и rect2.rect.y = 0: rect1.rect.y -= rect1.скорость если ключи[pygame.K_s] и rect1.rect.y

Вернуться в «Python»