Python と pygame は花火の特殊効果を実装します

Python と pygame は花火の特殊効果を実装します

新年が近づいてきたので、花火で新年を祝いましょう。サードパーティ ライブラリの pygame をインストールして使用する必要があります。Python での pygame ゲーム モジュールのインストールと使用方法を確認できます。https://ブログ .csdn.net/cnds123/article/details/119514520

レンダリングとソースコード

まずレンダリングを見てみましょう。

ソースコードは次のとおりです。

import pygame
import random
import math

# 初始化pygame
pygame.init()

# 设置窗口大小
width, height = 800, 600
screen = pygame.display.set_mode((width, height))

# 定义颜色
black = (0, 0, 0)
red = (255, 0, 0)

# 定义烟花粒子
class Particle:
    def __init__(self, x, y, color):
        self.x = x
        self.y = y
        self.color = color
        self.radius = random.randint(2, 4)
        self.angle = random.uniform(0, 2 * math.pi)
        self.speed = random.uniform(1, 3)
        self.gravity = 0.1

    def move(self):
        self.x += math.cos(self.angle) * self.speed
        self.y += math.sin(self.angle) * self.speed + self.gravity
        self.radius -= 0.1  # 粒子逐渐变小

    def draw(self):
        pygame.draw.circle(screen, self.color, (int(self.x), int(self.y)), int(self.radius))

# 定义烟花
class Firework:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
        self.particles = []
        self.exploded = False
        self.explode_height = random.randint(100, 400)  # 设置爆炸高度

        self.speed = random.randint(5, 10)  # 设置上升速度
        self.angle = math.pi / 2  # 设置上升角度为垂直向上

    def launch(self):
        if not self.exploded:
            self.y -= self.speed * math.sin(self.angle)
            if self.y <= self.explode_height:  # 到达设定高度后爆炸
                self.explode()
                self.exploded = True

    def explode(self):
        for _ in range(100):  # 爆炸产生的粒子数量
            self.particles.append(Particle(self.x, self.y, self.color))

    def draw(self):
        if not self.exploded:
            pygame.draw.circle(screen, self.color, (int(self.x), int(self.y)), 5)
        else:
            for particle in self.particles:
                particle.move()
                particle.draw()

#显示文字
#font = pygame.font.Font(None, 36)  # 设置字体和大小                
font = pygame.font.Font("C:\\Windows\\Fonts\\simsun.ttc", 36)        
text = font.render("龙年快乐", True, red)  # 渲染文本
text_rect = text.get_rect(center=(width // 2, height // 2))  # 获取文本的矩形区域

# 主循环
fireworks = []
clock = pygame.time.Clock()
running = True
while running:
    clock.tick(30)  # 控制帧率
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    screen.fill(black)

    # 绘制文本
    screen.blit(text, text_rect)

    # 发射烟花
    if random.randint(1, 20) == 1:  # 控制烟花发射频率
        fireworks.append(Firework(random.randint(0, width), height))

    # 更新烟花并绘制
    for firework in fireworks[:]:
        firework.launch()
        firework.draw()
        if firework.exploded and all(p.radius <= 0 for p in firework.particles):
            fireworks.remove(firework)

    pygame.display.flip()

pygame.quit()

pygame が画面上にフォントを表示する方法の説明

pygame.font.Font 関数を使用してフォントとサイズを設定し、font.render 関数を使用してテキストを画像としてレンダリングします。最後に、screen.blit 関数を使用して、レンダリングされたテキスト イメージを画面に描画します。

pygame.font.Font(None, font size) はシステムのデフォルトのフォントを使用し、中国語の文字をサポートしていない可能性があります。 None は、pygame.font.Font(None, 36) などのシステムのデフォルト フォントを表し、中国語の文字をサポートしていない可能性があります。何をするか? pygame.font.Font("Font name with path", font size) を使用して、次のように中国語の文字をサポートするフォントを指定します。 pygame.font.Font("C:\\Windows\\Fonts\\simsun.ttc" ;, 36)、simsun.ttc は宋代、フォントのパスと名前です。 Windows でフォントのパスと名前を確認するにはどうすればよいですか?下の写真を参照してください

改善: BGM を追加して楽しい雰囲気を追加

「# Main Loop」セクションの前に、次のコードを追加します。

# バックグラウンド ミュージックを読み込みます
pygame.mixer.music.load("楽しいリズムに合わせて歩く - Orange Light Music.mp3")
pygame.mixer.music.set_volume(0.5) # 音量を設定します
pygame.mixer.music.play(-1) # バックグラウンドミュージックを再生します。-1 はループ再生を意味します

このうち、pygame.mixer.music.load 関数は、BGM ファイル (たとえば、「Stepping on the Happy Rhythm - Orange Light Music.mp3」という名前のファイル) を読み込み、 に配置します。 コード ファイルと同じディレクトリ)、pygame.mixer.music.set_volume 関数を使用して音量を設定します (範囲は 0.0 ~ 1.0)。最後に、pygame.mixer.music.play 関数を使用して BGM を再生します。パラメータ -1 はループ再生を示します。

「ハッピーリズムを踏んで - オレンジ色の軽音楽.mp3」を置き換える独自の BGM ファイルを使用してください。ファイル名とパスが正しいことを確認してください。

おすすめ

転載: blog.csdn.net/cnds123/article/details/134974517