Мои весла не двигаются в python в моем римейке понг - PullRequest
1 голос
/ 26 февраля 2020

Я изменил свой код, и теперь мои весла перестали двигаться. Кто-нибудь знает почему? Проигнорируйте шар, пока, я еще не закончил кодировать это. До того, как я изменил свой код, я не определял свои формы, я просто рисовал их. Теперь, когда я определил их, ничто не будет двигаться. Я включил только соответствующий код.

    rectY1 = 240
    rectY2 = 240
    Y1change = 0
    Y2change = 0
    ballX = 320
    ballY = 240
    ballXvel = 0
    ballYvel = 0
    paddle1 = pygame.Rect(18,rectY1,10,120)
    paddle2 = pygame.Rect(620,rectY2,10,120)
    ball = pygame.Rect(ballX,ballY,30,30)
    def drawshapes():   
        pygame.draw.rect(DISPLAY, WHITE, paddle1)
        pygame.draw.rect(DISPLAY, WHITE, paddle2)
        pygame.draw.rect(DISPLAY, WHITE, ball)
    DISPLAY = pygame.display.set_mode((640,480),0,32)
    while True:
        for event in pygame.event.get():
            if event.type==QUIT:
                pygame.quit()
                sys.exit()
            if event.type == KEYDOWN :
                if event.key == K_SPACE :
                    ballXvel += 10
                    ballYvel += 10
        keys = pygame.key.get_pressed()

        Y1change = 0
        Y2change = 0
    #make paddles move
        if keys[K_UP]:
            Y2change -= 10

        if keys[K_DOWN]:
            Y2change += 10

        if keys[ord('w')]:
            Y1change -= 10

        if keys[ord('s')]:
            Y1change += 10
    #stop paddles at edges 
        if rectY1 < 5 :
            rectY1 = 5
        if rectY1 > 355 :
            rectY1 = 355
        if rectY2 < 5 :
            rectY2 = 5
        if rectY2 > 355 :
            rectY2 = 355

        ballX += ballXvel
        ballY += ballYvel
        rectY1 += Y1change
        rectY2 += Y2change
        DISPLAY.fill(BLACK)
        drawshapes()
        pygame.display.update()
        fpsClock.tick(FPS)

1 Ответ

1 голос
/ 26 февраля 2020

Код никогда не обновляет весло rect. Конечно, rectY1 и rectY2 обновляются, но это никогда не применяется к paddle1 и paddle2.

До drawshapes(), примените изменения к циклам весла:

    rectY1 += Y1change
    rectY2 += Y2change
    paddle1.y = rectY1   # <-- HERE - Update the paddle's rect
    paddle2.y = rectY2   #            which is used to draw it
    DISPLAY.fill(BLACK)

Но я думаю, что ваш код был бы проще, если бы он отслеживал изменения непосредственно на paddle1.x и paddle1.y et c.

...