Pygame を使ったコードレインアニメーションの作成

PythonPythonBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

このプロジェクトでは、PythonのPygameライブラリを使って簡単なコードレインアニメーションを作成する方法を学びます。「マトリックス」のような映画で人気になったコードレインアニメーションは、画面に降り注ぐ文字を表示し、デジタルな雨の印象を与えます。私たちはPygameライブラリを使ってアニメーションを作成し、ウィンドウに表示します。

👀 プレビュー

Code rain

🎯 タスク

このプロジェクトでは、以下を学びます。

  • Pygameでアニメーションウィンドウを設定する方法
  • 各降下文字を表す「雨滴」クラスを定義する方法
  • 雨滴クラスの複数のインスタンスを生成して表示する方法
  • アニメーションを継続的に更新するためのメインループを実装する方法
  • アニメーションウィンドウを適切に閉じる方法

🏆 成果

このプロジェクトを完了すると、以下ができるようになります。

  • Pygameライブラリを使ってアニメーションを作成する
  • Pythonでクラスを定義して使用する
  • Pygameでユーザーイベントを処理する
  • Pygameでメインアニメーションループを作成する
  • Pygameでアニメーションウィンドウを適切に閉じる

プロジェクトファイルを作成する

始める前に、Pygameがインストールされていることを確認してください。Pygameがインストールされていない場合は、pipを使ってインストールできます。

sudo pip install pygame

次に、好きなコードエディタまたはIDEで code_rain.py という名前のファイルを作成します。これがポングゲームのコードを記述するメインファイルになります。

cd ~/project
touch code_rain.py
✨ 解答を確認して練習

アニメーションウィンドウの設定

code_rain.py ファイルの中で、コードの最初に必要なライブラリをインポートします。

import pygame
import random

次に、pygame.init() を呼び出してPygameを初期化します。

pygame.init()

次に、幅、高さ、キャプションを定義することでアニメーションウィンドウを設定します。

width, height = 800, 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("Code Rain")

アニメーションで使用する色を定義します。

background_color = (0, 0, 0)
text_color = (0, 255, 0)

フォント設定:

font = pygame.font.Font(None, 36)
✨ 解答を確認して練習

雨滴クラスの定義

次に、コードレインアニメーションの各降下文字を表す 雨滴 クラスを定義します。雨滴 クラスには、各雨滴の初期位置、テキスト、降下速度などの属性が含まれます。

class Raindrop:
    def __init__(self):
        self.x = random.randint(0, width)
        self.y = random.randint(0, height)
        self.text = chr(random.randint(33, 126))
        self.speed = random.randint(1, 5)

    def fall(self):
        self.y += self.speed
        if self.y > height:
            self.y = 0
            self.x = random.randint(0, width)

    def display(self):
        text_surface = font.render(self.text, True, text_color)
        screen.blit(text_surface, (self.x, self.y))

__init__ メソッドは、クラスがインスタンス化されるときに呼び出され、雨滴のプロパティを初期化します。これには、ランダムな初期位置 (x, y)、ランダムなテキスト文字 (ASCIIコード33から126まで)、およびランダムな降下速度 (1から5まで) が含まれます。

fall メソッドは、雨滴を下方に移動させるために使用されます。これは、雨滴の速度に応じて self.y の値を増やします。雨滴が画面外に移動した場合 (つまり、self.y が画面の高さより大きい場合)、画面の上部にリセットし、画面上の新しい x 位置をランダムに選択します。

display メソッドは、雨滴を表示するために使用されます。これは、pygame ライブラリの font.render 関数を使用して、テキストサーフェイスを作成し、画面上の雨滴の位置 (self.x, self.y) にレンダリングします。

✨ 解答を確認して練習

雨滴の生成と表示

次に、降下文字をシミュレートするために 雨滴 クラスの複数のインスタンスを作成して表示します。以下のコードでは、指定された数の雨滴を生成し、画面上のそれらの位置を更新します。

num_raindrops = 100
raindrops = [Raindrop() for _ in range(num_raindrops)]
✨ 解答を確認して練習

メインループの処理

このステップでは、画面を継続的に更新することでアニメーションを処理するメインループを実装します。また、ウィンドウを正常に閉じるための終了イベントを監視します。

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    screen.fill(background_color)

    for drop in raindrops:
        drop.fall()
        drop.display()

    pygame.display.flip()

pygame.quit()

アニメーションループの本体は while ループで、running 変数がループを制御します。runningTrue の場合にのみループが継続します。

アニメーションループ内では、pygame.event.get() を使って pygame イベントのリストを取得し、イベントのリストを反復処理することで各イベントを調べます。この場合、主なチェックは、ユーザーがアニメーションウィンドウを閉じたときに生成される終了イベント pygame.QUIT があるかどうかです。終了イベントが検出された場合、アニメーションループを終了するために runningFalse に設定します。

screen.fill(background_color) は、新しいフレームを描画する準備として、アニメーションウィンドウ screen の背景色を塗りつぶして、前のフレームの内容を覆います。

raindrops リストを反復処理し、各雨滴オブジェクトに対して fall() メソッドを呼び出して雨滴を落下させ、display() メソッドを呼び出してゲームウィンドウ上に雨滴を表示します。

pygame.display.flip() は、アニメーション用に上記のすべての描画操作を画面に反映させるために使用されます。

アニメーションループが終了した後、pygame.quit() を呼び出して pygame ライブラリをクリーンアップし、アニメーションを終了します。

✨ 解答を確認して練習

プロジェクトを実行する

最後に、デスクトップに切り替えて、以下のコマンドを使用してプロジェクトを実行します。

python code_rain.py
Code rain
✨ 解答を確認して練習

まとめ

このプロジェクトでは、PythonのPygameライブラリを使って簡単なコードレインアニメーションを作成する方法を学びました。Pygameモジュールを初期化し、雨滴 クラスを定義し、複数の雨滴を生成して表示し、アニメーションを処理するためのメインループを実装しました。このプロジェクトは、Pygameを使って簡単なアニメーションを作成する方法の基本的な理解を提供します。