簡體   English   中英

如何移動pygame rect?

[英]How to move a pygame rect?

當我運行下面的代碼時,pygame rect不會移動。 每次按左箭頭鍵時,它都設置為在x方向上移動-7,但是什么也沒有發生。 我試圖打印rect的位置,盡管它在屏幕上沒有移動,但似乎它的位置已從初始位置300更新到293。 任何幫助深表感謝!

import sys
import pygame

PINK = (255, 102, 255)
BLACK = (0, 0, 0)

pygame.init()
clock = pygame.time.Clock()
pygame.display.init()

font = pygame.font.SysFont("impact", 20)


screen = pygame.display.set_mode(750, 550)

class Paddle:
    def __init__(self):
        self.paddle = pygame.Rect(300, 730,
                                  10,
                                  52)

    def draw_paddle(self):
        # Draw paddle
        pygame.draw.rect(screen, PINK,
                         self.paddle)

    def move_paddle_left(self):
        key = pygame.key.get_pressed()
        if key[pygame.K_LEFT]:
            self.paddle.left -= 7
            if self.paddle.left < 0:
                self.paddle.left = 0
            print(self.paddle)


class Game:
    def __init__(self):
        self.run()
        Paddle()
        # Levels().draw_level_one()
    def run(self):
        while 1:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    sys.exit()
            # fps lock, screen fill and method call for input
            clock.tick(60)
            screen.fill(BLACK)
            Paddle().draw_paddle()
            Paddle().move_paddle_left()
            pygame.display.flip()
# Creates instance of the game class, and runs it
if __name__ == "__main__":
    Game()
    Game().run()

盡管我無法讓您的代碼實際繪制槳,但我確實注意到您在循環的每次迭代中都創建了一個新的Paddle實例,因此位置每次重置為300。

嘗試以下方法:

def run(self):
    paddle = Paddle()
    while 1:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
        # fps lock, screen fill and method call for input
        clock.tick(60)
        screen.fill(BLACK)
        paddle.draw_paddle()
        paddle.move_paddle_left()
        pygame.display.flip()

這樣,您將創建一個paddle對象,然后在每次迭代中重用其值,並且它將一直向左移動直到其達到0。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM