Как сделать объекты go до конца экрана в Pygame? - PullRequest
1 голос
/ 29 марта 2020

Я довольно новичок в Python и программировании в целом. Я делаю игру в понг на Pygame, но у меня проблемы с понгами (барами), которые исчезают с экрана. Вот код:

    if Move_Down:
        pong1_posY += 10
    if Move_Up:
        pong1_posY -= 10
    if Move_Down2:
        pong2_posY += 10
    if Move_Up2:
        pong2_posY -= 10

    if pong1_posY + pong_size[1] >= ScreenH:
        pong1_posY -= 10
    elif pong1_posY <= 0:
        pong1_posY += 10
    if pong2_posY + pong_size[1] >= ScreenH:
        pong2_posY -= 10
    elif pong2_posY <= 0:
        pong2_posY += 10

Обратите внимание, что каждая переменная, имеющая «2», относится к правому понгу. Если ничего нет, это относится к понгу слева.

Код работает нормально. Понги не go с экрана, но и при этом они не достигают конца экрана. enter image description here

Это так далеко, как бары будут go. Почему это так и как я могу сделать их go вплоть до верхней или нижней части экрана?

Ответы [ 2 ]

0 голосов
/ 29 марта 2020

Используйте min и max, чтобы ограничить позиции границами

clamp(value, vmin, vmax):
    return max(vmin, min(vmax, value))
movePong(posY, moveDown, moveUp):
    if moveDown:
        posY += 10
    if moveUp:
        posY -= 10
    return posY
pong1_posY = movePong(pong1_posY, Move_Down, Move_Up)
pong1_posY = clamp(pong1_posY, 0, ScreenH-pong_size[1])

pong2_posY = movePong(pong2_posY, Move_Down2, Move_Up2)
pong2_posY = clamp(pong2_posY, 0, ScreenH-pong_size[1])
0 голосов
/ 29 марта 2020

У меня была похожая проблема с игрой типа космических захватчиков. Кажется, что вы пропускаете пиксели по краю экрана, потому что вы меняете положение весла по 10 пикселей за раз. Попробуйте:

if pong1_posY + pong_size[1] >= ScreenH:
   pong1_posY = ScreenH - pong_size[1]
elif pong1_posY <= 0:
   pong1_posY = 0
if pong2_posY + pong_size[1] >= ScreenH:
   pong2_posY = ScreenH - pong_size[1]
elif pong2_posY <= 0:
   pong2_posY = 0

Предполагается, что координата весла находится в верхнем левом углу изображения весла

...