コンテンツにスキップ

Python/Pygame

出典: フリー教科書『ウィキブックス(Wikibooks)』

pygameモジュール

[編集]

pygameは、Pythonの2Dゲーム開発向けのオープンソースライブラリです。

グラフィックス処理

[編集]

画像の表示と操作

[編集]
import pygame

# 画面の初期化
pygame.init()
screen = pygame.display.set_mode((800, 600))

# 画像の読み込みと表示
image = pygame.image.load('image.png')
screen.blit(image, (100, 100))

# 画面の更新
pygame.display.update()

# ゲームループ
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

図形の描画

[編集]
import pygame

# 画面の初期化
pygame.init()
screen = pygame.display.set_mode((800, 600))

# 図形の描画
pygame.draw.rect(screen, (255, 0, 0), (100, 100, 200, 150))
pygame.draw.circle(screen, (0, 255, 0), (400, 300), 100)

# 画面の更新
pygame.display.update()

# ゲームループ
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

サウンド処理

[編集]

サウンドの再生

[編集]
import pygame

# サウンドの初期化
pygame.mixer.init()

# サウンドの読み込みと再生
sound = pygame.mixer.Sound('sound.wav')
sound.play()

# ゲームループ
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

イベント処理

[編集]

キーボード入力

[編集]
import pygame

# 画面の初期化
pygame.init()
screen = pygame.display.set_mode((800, 600))

# ゲームループ
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                print("Space key pressed")

        if event.type == pygame.QUIT:
            running = False

マウス入力

[編集]
import pygame

# 画面の初期化
pygame.init()
screen = pygame.display.set_mode((800, 600))

# ゲームループ
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.MOUSEBUTTONDOWN:
            if event.button == 1:
                print("Left mouse button clicked")

        if event.type == pygame.QUIT:
            running = False

物理エンジンの統合

[編集]

物理エンジンの統合を介して、重力、衝突、物体の運動などの物理シミュレーションを実現することができます。

物理エンジンの統合の例

[編集]
import pygame
from pygame.locals import *
import pymunk

# 物理エンジンの初期化
space = pymunk.Space()
space.gravity = (0, 1000)

# 地面の作成
ground = pymunk.Segment(space.static_body, (0, 500), (800, 500), 0)
ground.friction = 1.0
space.add(ground)

# ボールの作成
ball_body = pymunk.Body(1, 100)
ball_body.position = (400, 200)
ball_shape = pymunk.Circle(ball_body, 30)
space.add(ball_body, ball_shape)

# ゲームループ
running = True
while running:
    for event in pygame.event.get():
        if event.type == QUIT:
            running = False

    # 物理エンジンの更新
    space.step(1 / 60.0)

    # 画面の描画
    screen.fill((255, 255, 255))
    pygame.draw.line(screen, (0, 0, 0), (0, 500), (800, 500), 2)
    pygame.draw.circle(screen, (255, 0, 0), ball_body.position, 30)
    pygame.display.flip()

pygame.quit()

ネットワーキング

[編集]

ネットワーキング機能を使用することで、ゲーム内でのネットワーク通信やマルチプレイヤー機能の実装が可能です。

ネットワーキングの例

[編集]
import pygame
from pygame.locals import *
import socket

# ソケットの作成
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 5000))
server_socket.listen(1)

# ゲームループ
running = True
while running:
    for event in pygame.event.get():
        if event.type == QUIT:
            running = False

    # ネットワーク通信の処理
    connection, address = server_socket.accept()
    data = connection.recv(1024)
    print("Received data:", data)

    # ゲームのロジックや描画処理など

    connection.close()

pygame.quit()

注意

[編集]

これらはpygameモジュールの機能の一部です。詳細な情報や他の機能については、公式のpygameドキュメントを参照してください。