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

🎯 タスク
このプロジェクトでは、以下を学びます。
- 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 変数がループを制御します。running が True の場合にのみループが継続します。
アニメーションループ内では、pygame.event.get() を使って pygame イベントのリストを取得し、イベントのリストを反復処理することで各イベントを調べます。この場合、主なチェックは、ユーザーがアニメーションウィンドウを閉じたときに生成される終了イベント pygame.QUIT があるかどうかです。終了イベントが検出された場合、アニメーションループを終了するために running を False に設定します。
screen.fill(background_color) は、新しいフレームを描画する準備として、アニメーションウィンドウ screen の背景色を塗りつぶして、前のフレームの内容を覆います。
raindrops リストを反復処理し、各雨滴オブジェクトに対して fall() メソッドを呼び出して雨滴を落下させ、display() メソッドを呼び出してゲームウィンドウ上に雨滴を表示します。
pygame.display.flip() は、アニメーション用に上記のすべての描画操作を画面に反映させるために使用されます。
アニメーションループが終了した後、pygame.quit() を呼び出して pygame ライブラリをクリーンアップし、アニメーションを終了します。
プロジェクトを実行する
最後に、デスクトップに切り替えて、以下のコマンドを使用してプロジェクトを実行します。
python code_rain.py

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



