Pygame入門 ブロック崩しのパドルをスプライトで作る

スプライトの使い方

1.「pygame.sprite.Sprite」を継承してスプライトオブジェクトを作る

2.スプライトグループを作る

3.スプライトグループにスプライトオブジェクトを追加する

4.スプライトグループの更新を実行する

グループに追加されているスプライトオブジェクトのupdate()メソッドが実行される。

5.スプライトグループの描画を実行する

グループに追加されているスプライトオブジェクトのself.imageとself.rectの内容を使って描画される。
self.image(pygame.Surface型)によって描画される内容が決まる。
self.rect(pygame.Rect型)によって描画される位置が決まる。

マウスの位置によってパドルが左右に動くプログラム

import pygame
import sys

SCREEN = pygame.Rect(0, 0, 400, 400)
FPS = 30

WHITE = (255, 255, 255)
GREEN = (0, 255, 0)

PADDLE_WIDTH = 60
PADDLE_HEIGHT = 20
PADDLE_POS_Y = SCREEN.bottom - PADDLE_HEIGHT * 2

class Paddle(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.Surface((PADDLE_WIDTH, PADDLE_HEIGHT))
        self.image.fill(GREEN)
        self.rect = pygame.Rect(0, PADDLE_POS_Y, PADDLE_WIDTH, PADDLE_HEIGHT)

    def update(self):
        self.rect.left = pygame.mouse.get_pos()[0] #Paddleの左端をマウスのX座標にする
        self.rect = self.rect.clamp(SCREEN) #SCREENから出ないようにする


pygame.init()
clock = pygame.time.Clock()
screen = pygame.display.set_mode(SCREEN.size)
paddle = Paddle() #スプライトオブジェクトの作成
sprite_group = pygame.sprite.Group() #スプライトグループの作成
sprite_group.add(paddle) #スプライトグループへスプライトオブジェクトを追加

while True:
    screen.fill(WHITE)
    sprite_group.update() #スプライトグループの更新
    sprite_group.draw(screen) #スプライトグループの描画

    pygame.display.update()
    clock.tick(FPS)

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