画像を読み込む
CoddyのPygameジャーニー「スプライトと画像」セクションの一部。レッスン 1/36。
ゲームでは形だけでなく、画像も描画します。画像は画像ファイルから読み込まれ、pygameによってSurfaceに変換されます。これはウィンドウと同じ種類のもので、描画できるピクセルの格子です。
ship = pygame.image.load("assets/images/ship.png").convert_alpha()パスはmain.pyからの相対パスです。ゲームと同じ階層にassetsフォルダーがあり、ゲームの横にあるAssetsタブには、その中のすべてのファイルが表示されます。
convert_alpha()は画像をウィンドウ独自のピクセル形式にコピーするため、毎フレーム描画しても高速で、透過ピクセルも保持されます。ウィンドウが必要なので、set_modeの後に画像を読み込んでください。画像はループの前に一度だけ読み込みます。ファイルを1秒間に60回読み込むと、ゲームの動作が遅くなります。
画像を描画するには、ウィンドウにblitします。位置は画像の左上隅が置かれる場所です。
screen.blit(ship, (288, 208))screen.fill(...)の後にblitしてください。そうしないと、塗りつぶしで画像が上書きされます。
チャレンジ
簡単set_modeの後に、assets/images/ship.pngを.convert_alpha()で読み込み、shipという名前の変数に格納します。- ループ内で、塗りつぶしの後に、左上の角が
(288, 208)になる位置にshipをblitします。船は64×64ピクセルなので、640×480のウィンドウの中央に配置されます。
自分で試してみよう
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Space Images")
clock = pygame.time.Clock()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((20, 22, 40))
pygame.display.flip()
clock.tick(60)
pygame.quit()
スプライトと画像のすべてのレッスン
自分で練習してみよう: Pygameプレイグラウンド