Pygame マウスカーソル に合わせて Paddle が動く
def main(): # Initialize pygame screen pygame.init() screen = pygame.display.set_mode(GAME_RECT.size) pygame.display.set_caption("Game Title") # Create sprite group sprite_group = pygame.sprite.RenderUpdates() Paddle.containers = sprite_group Paddle() # Game loop while True: screen.fill((0,0,0)) # fill with black sprite_group.update() sprite_group.draw(screen) pygame.display.update() for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() if event.type == KEYDOWN and event.key == K_ESCAPE: pygame.quit() sys.exit() # Paddle inheritance Sprite class class Paddle(pygame.sprite.Sprite): def __init__(self): # Default sprite group pygame.sprite.Sprite.__init__(self, self.containers) self.image, self.rect = load_image("paddle.png") self.rect.bottom = GAME_RECT.bottom def update(self): self.rect.centerx = pygame.mouse.get_pos()[0] self.rect.clamp_ip(GAME_RECT) def load_image(filename): filename = os.path.join("resource", filename) try: image = pygame.image.load(filename) except pygame.error: print ("Failed to load image:", filename) raise SystemExit() return image, image.get_rect() if __name__ == "__main__": main()
補足
# Create sprite group
sprite_group = pygame.sprite.RenderUpdates()
Paddle.containers = sprite_group
Paddle()
Paddle のインスタンス生成前に、sprite_group を Paddle.containers メンバ変数に登録。
複数のスプライトをグループにまとめると更新と描画がシンプルになる。
class Paddle(pygame.sprite.Sprite): def __init__(self): # Default sprite group pygame.sprite.Sprite.__init__(self, self.containers) self.image, self.rect = load_image("paddle.png") self.rect.bottom = GAME_RECT.bottom
Paddle インスタンス生成時、init() (コンストラクタ)で pygame.sprite.Sprite.__init__()を呼び出し、Spriteを継承。
引数にグループリスト(containers)を渡す。
(自身のメンバ変数をクラスの外部から定義し、インスタンス化時にそれをコンストラクタ内で使用するような書き方に個人的に慣れない)