Мяч не отскакивает от экрана в пигме - PullRequest
1 голос
/ 08 февраля 2020

Я пишу игру в понг с одним веслом в пигме. Мяч должен отскочить от стены и весла. Но мяч только иногда отскакивает от стены. Вот код, который заставляет мяч подпрыгивать:

    elif ball_x == 785:
        dbx = -dbx
    elif ball_y == 585:
        dby = -dby
    elif ball_y == 15:
        dby = -dby
    elif ball_x == 60 and ball_y > rect1_y - 110 and ball_y < rect1_y + 110:
        dbx = -dbx

Как мне это исправить?

Ответы [ 2 ]

0 голосов
/ 09 февраля 2020

Вы должны инвертировать dbx, когда мяч касается левой или правой части окна. И вы должны инвертировать dby, когда мяч касается вершины или низа.
Но если выровненная по оси составляющая скорости шара не точно равна 1, то шар не будет точно касаться границы. Вы должны оценить, если координата <=, >=, а не ==.

Мое предложение:

radius = 15
width, height = 800, 600

if ball_x <= radius or ball_x >= width-radius:
    dbx = -dbx
if ball_y <= radius or ball_y >= height-radius:
    dby = -dby
0 голосов
/ 09 февраля 2020

Вместо проверки ball_x == 785 вместо проверки ball_x >= 785. Как написано, ваш код заставляет шар отскакивать, только когда его координата x точно равна 785 . Если ваш шар движется более чем на один пиксель за кадр (что, вероятно, он делает), то большую часть времени он будет «перепрыгивать» прямо через линию 785 и не подпрыгивать.

...