Игра в понг в ткинтер - PullRequest
0 голосов
/ 04 июля 2019

Я пытаюсь реализовать игру в понг в python tkinter.У меня есть весло на левой стороне холста, и я хочу обнаружить столкновение шара с этим веслом.Я не могу правильно определить столкновение, так как иногда мяч просто проходит через весло.Пожалуйста, оцените любую помощь. Ниже приведен код для обнаружения столкновений, который я использовал, не знаю, что с ним не так.Я пытаюсь реализовать, если позиция мяча находится между верхней и нижней лопастями и между левой и правой, то есть столкновение

def hit_paddle(self, pos):
    """ pos(left, top, right, bottom)"""
    paddle_pos = self.canvas.coords(self.shape)
    if ball_pos[1] >= paddle_pos[1] and ball_pos[1] <= paddle_pos[3]:
        if ball_pos[2] >= paddle_pos[0] and ball_pos[2] <= paddle_pos[2]:
            return True
    return False

Ответы [ 2 ]

1 голос
/ 04 июля 2019

У вас правильная идея, но есть несколько редких случаев, когда мяч может пройти через весло.

Первый оператор if проверяет положение y мяча и ракетки. Это должно вернуть true, если любая часть мяча находится между paddle_pos[1] и paddle_pos[3].

Второй оператор if проверяет положение x и имеет ту же логику. Вы должны проверить, находится ли ЛЕВАЯ сторона мяча в пределах досягаемости, поскольку это та часть мяча, которая ударяет в ЛЕВУЮ ракетку.

Попробуйте этот код:

def hit_paddle(self, pos):
     """ pos(left, top, right, bottom)"""
     paddle_pos = self.canvas.coords(self.shape)
     if ball_pos[3] >= paddle_pos[1] and ball_pos[1] <= paddle_pos[3]:
         if ball_pos[0] >= paddle_pos[0] and ball_pos[0] <= paddle_pos[2]:
             return True
     return False
0 голосов
/ 04 июля 2019

Предполагая, что ball_pos[1] является координатой y нижней левой вершины ограничительной рамки шара, разве вы не должны также наложить ограничение на координату y верхней правой вершины ограничительной рамки шара? Например, если мяч находится ниже нижнего края весла, я думаю, ваш код не будет считать его попаданием.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...