Pygame の surface.blit() 関数

Maxim Maeder 2023年6月21日
  1. Pygame の surface.blit() 関数
  2. Pygame で surface.blit() 関数を使用する
Pygame の surface.blit() 関数

このチュートリアルでは、Pygame での blit() 関数の機能について説明します。

ここに表示されるコードは、有効な Pygame ウィンドウの完全なコードではありません。 必要最小限のフレームワークに興味がある場合は、この 記事 を参照してください。

Pygame の surface.blit() 関数

Pygame はサーフェスを中心に展開し、blit() 関数はこれらのサーフェスをオーバーラップします。 これの最も顕著な例は、本質的に単なる表面である画面であり、私たちが見るすべてのものをそれに吹き飛ばします。

しかし、他の面を作成して blit() で重ねることもできます。 これを行う前に、このメソッドに渡すことができるさまざまな引数について説明します。

後で具体的な例を見ていきますが、ここでは機能に焦点を当てます。

以下に、blit() メソッドの構造を示します。 サーフェスを設定していないため、このコードは機能しないことに注意してください。

1つのサーフェスで blit() 関数を呼び出し、オーバーレイされたサーフェスを提供することから始めます。 次に、surfaceTwo の左上が surfaceOne のどこにあるかを指定します。

ここで終了しても blit() は機能しますが、さらに 2つの引数を渡すことができます。 この領域は、ブリットされる surfaceTwo の領域を表す rect です。

したがって、その一部と special_flags だけで、ブリットのブレンド モードを定義できます。

コードスニペット:

surfaceOne.blit(surfaceTwo, destination, area=none, special_flags=none)

Pygame で surface.blit() 関数を使用する

では、具体例を見ていきます。 いくつかのサーフェスを作成することから始めましょう。 このコードはメイン ループの前にあることに注意してください。

Surface() メソッドを使用して新しいサーフェスを作成できます。このメソッドでは、目的の寸法を指定する必要があります。 また、後で確認できるように、両方のサーフェスを色で塗りつぶします。

コードの最後の 5 行で、動作中の blit() 関数を確認できます。

コードスニペット:

surfaceOne = pygame.Surface((100, 100))
surfaceOne.fill(
    (
        200,
        100,
        100,
    )
)

surfaceTwo = pygame.Surface((30, 30))
surfaceTwo.fill(
    (
        100,
        200,
        100,
    )
)

surfaceOne.blit(surfaceTwo, [10, 10], [0, 0, 10, 5])

ここで、surfaceOne を画面にブリットするだけで、結果が表示されます。 このコードはメイン ループで発生します。

screen.blit(surfaceOne, [10, 10])

出力:

Pygame のブリット関数

完全なサンプルコード

# Imports
import sys
import pygame

# Configuration
pygame.init()
fps = 60
fpsClock = pygame.time.Clock()
width, height = 640, 480
screen = pygame.display.set_mode((width, height), pygame.RESIZABLE)

surfaceOne = pygame.Surface((100, 100))
surfaceOne.fill(
    (
        200,
        100,
        100,
    )
)

surfaceTwo = pygame.Surface((30, 30))
surfaceTwo.fill(
    (
        100,
        200,
        100,
    )
)

surfaceOne.blit(surfaceTwo, [10, 10], [0, 0, 10, 5])

# Game loop.
while True:
    screen.fill((20, 20, 20))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    screen.blit(surfaceOne, [10, 10])

    pygame.display.flip()
    fpsClock.tick(fps)
著者: Maxim Maeder
Maxim Maeder avatar Maxim Maeder avatar

Hi, my name is Maxim Maeder, I am a young programming enthusiast looking to have fun coding and teaching you some things about programming.

GitHub

関連記事 - Pygame Function