Возникли небольшие проблемы с обнаружением столкновения с понгом. Я создал класс для Pong, инициализировал мой холст атрибутами окна и т. Д. И скоростью мяча для понга. Создал весла с использованием изображений, а затем изменил их размер до размеров весла, которые я хотел, используя PIL, как и для мяча для понга.
Прямо сейчас я использую метод canvas.coords, чтобы определить текущее местоположение моих ракеток и мяча. Согласно моей странице CPSC, это должно возвращать четыре значения: верхний правый левый и нижний правый / левый углы, и я могу затем обнаруживать столкновения, используя их.
Однако он возвращает только два значения и обнаруживает столкновения в средней точке ракетки на всем протяжении экрана - например, ракетка находится на самом верху в середине экрана, а затем мяч проходит в в центре полотна он обнаружит столкновение и изменит скорость. Соответствующий код для коллизий размещен ниже.
def animate_pong_ball(self):
self.C1.move(self.animated_ball, self.pong_dx, self.pong_dy)
x1, y1 = self.C1.coords(self.animated_ball)
if x1 <= 0:
self.pong_dx *= -1
elif x1 > WINDOW_WIDTH / 2:
self.pong_dx *= -1
if y1 <= 0:
self.pong_dy *= -1
elif y1 > WINDOW_HEIGHT:
self.pong_dy *= -1
def detect_collisions(self):
p1_x, p1_y = self.C1.coords(self.paddle_1)
p2_x, p2_y = self.C1.coords(self.paddle_2)
b_x, b_y = self.C1.coords(self.animated_ball)
if p1_x == b_x or p2_x == b_x:
self.pong_dx *= -1
if p1_y == b_y or p2_y == b_y:
self.pong_dy *= -1
Полный код на http://pastebin.com/KfEkpsAN Знайте, что там есть ошибки, грубая копия просто пытается заставить работать коллизии правильно в данный момент и не могу понять, что не так