Pygame入門 画像をSpriteにして動かす

import pygame
import sys

SCREEN = pygame.Rect(0, 0, 400, 400)
WHITE = (255, 255, 255)

class Ball(pygame.sprite.Sprite):
    def __init__(self, image_file, pos, speed):
        pygame.sprite.Sprite.__init__(self)
        x, y = pos
        vx, vy = speed
        self.image = pygame.image.load(image_file)
        w = self.image.get_width()
        h = self.image.get_height()
        self.rect = pygame.Rect(x, y, w, h)
        self.vx = vx
        self.vy = vy

    def update(self):
        self.rect.move_ip(self.vx, self.vy)
        if self.rect.left < SCREEN.left or SCREEN.right < self.rect.right:
            self.vx = -self.vx
        if self.rect.top < SCREEN.top or SCREEN.bottom < self.rect.bottom:
            self.vy = -self.vy
        self.rect = self.rect.clamp(SCREEN)

    def draw(self, surface):
        surface.blit(self.image, self.rect)

def main():
    pygame.init()
    screen = pygame.display.set_mode(SCREEN.size)
    ball = Ball('ball.png', (200, 200), (5, 10))
    clock = pygame.time.Clock()

    while True:
        clock.tick(30)
        screen.fill(WHITE)
        ball.update()
        ball.draw(screen)
        pygame.display.update()

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()

main()

実行結果

f:id:collatz:20220404163421g:plain