0
0

Pythonで簡単に作れる!Pygameを使ったピンポンゲームの作り方

Posted at

はじめに

こんにちは!今回はPythonで簡単にピンポンゲームを作成する方法を紹介します。pygameライブラリを使えば、初心者でも手軽にゲームを作ることができます。それでは、早速始めましょう!

Pygameのインストール

まずは、pygameライブラリをインストールします。以下のコマンドをターミナルで実行してください。

pip install pygame

ゲームプログラムを書く

import pygame
import sys

# pygameを初期化
pygame.init()

# 画面の設定
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("ピンポンゲーム")

# 色の定義
black = (0, 0, 0)
white = (255, 255, 255)

# パドルのサイズ
paddle_width = 10
paddle_height = 100

# ボールのサイズ
ball_radius = 10

# パドルの位置
paddle1_x = 50
paddle1_y = (screen_height // 2) - (paddle_height // 2)
paddle2_x = screen_width - 50 - paddle_width
paddle2_y = (screen_height // 2) - (paddle_height // 2)

# ボールの位置と速度
ball_x = screen_width // 2
ball_y = screen_height // 2
ball_dx = 5
ball_dy = 5

# パドルの速度
paddle_speed = 10

# メインループ
running = True
clock = pygame.time.Clock()

while running:
    # イベント処理
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # パドルの移動
    keys = pygame.key.get_pressed()
    if keys[pygame.K_w] and paddle1_y > 0:
        paddle1_y -= paddle_speed
    if keys[pygame.K_s] and paddle1_y < screen_height - paddle_height:
        paddle1_y += paddle_speed
    if keys[pygame.K_UP] and paddle2_y > 0:
        paddle2_y -= paddle_speed
    if keys[pygame.K_DOWN] and paddle2_y < screen_height - paddle_height:
        paddle2_y += paddle_speed

    # ボールの移動
    ball_x += ball_dx
    ball_y += ball_dy

    # ボールの壁との衝突
    if ball_y - ball_radius < 0 or ball_y + ball_radius > screen_height:
        ball_dy = -ball_dy

    # ボールのパドルとの衝突
    if (ball_x - ball_radius < paddle1_x + paddle_width and 
        paddle1_y < ball_y < paddle1_y + paddle_height) or \
       (ball_x + ball_radius > paddle2_x and 
        paddle2_y < ball_y < paddle2_y + paddle_height):
        ball_dx = -ball_dx

    # ボールが外れた場合のリセット
    if ball_x < 0 or ball_x > screen_width:
        ball_x = screen_width // 2
        ball_y = screen_height // 2
        ball_dx = -ball_dx

    # 描画
    screen.fill(black)
    pygame.draw.rect(screen, white, (paddle1_x, paddle1_y, paddle_width, paddle_height))
    pygame.draw.rect(screen, white, (paddle2_x, paddle2_y, paddle_width, paddle_height))
    pygame.draw.circle(screen, white, (ball_x, ball_y), ball_radius)
    
    # 画面の更新
    pygame.display.flip()
    clock.tick(60)

pygame.quit()
sys.exit()

コードの説明

1. ゲームの基本設定

Pygameを初期化し、ゲーム画面の設定を行います。画面の幅や高さ、色などを設定します。

import pygame
import sys

# pygameを初期化
pygame.init()

# 画面の設定
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("ピンポンゲーム")

# 色の定義
black = (0, 0, 0)
white = (255, 255, 255)

2. パドルとボールの設定

パドルとボールのサイズ、位置、速度を設定します。

# パドルのサイズ
paddle_width = 10
paddle_height = 100

# ボールのサイズ
ball_radius = 10

# パドルの位置
paddle1_x = 50
paddle1_y = (screen_height // 2) - (paddle_height // 2)
paddle2_x = screen_width - 50 - paddle_width
paddle2_y = (screen_height // 2) - (paddle_height // 2)

# ボールの位置と速度
ball_x = screen_width // 2
ball_y = screen_height // 2
ball_dx = 5
ball_dy = 5

# パドルの速度
paddle_speed = 10

3. メインループの作成

ゲームのメインループを作成し、イベント処理やパドル、ボールの動きを制御します。

# メインループ
running = True
clock = pygame.time.Clock()

while running:
    # イベント処理
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # パドルの移動
    keys = pygame.key.get_pressed()
    if keys[pygame.K_w] and paddle1_y > 0:
        paddle1_y -= paddle_speed
    if keys[pygame.K_s] and paddle1_y < screen_height - paddle_height:
        paddle1_y += paddle_speed
    if keys[pygame.K_UP] and paddle2_y > 0:
        paddle2_y -= paddle_speed
    if keys[pygame.K_DOWN] and paddle2_y < screen_height - paddle_height:
        paddle2_y += paddle_speed

    # ボールの移動
    ball_x += ball_dx
    ball_y += ball_dy

    # ボールの壁との衝突
    if ball_y - ball_radius < 0 or ball_y + ball_radius > screen_height:
        ball_dy = -ball_dy

    # ボールのパドルとの衝突
    if (ball_x - ball_radius < paddle1_x + paddle_width and 
        paddle1_y < ball_y < paddle1_y + paddle_height) or \
       (ball_x + ball_radius > paddle2_x and 
        paddle2_y < ball_y < paddle2_y + paddle_height):
        ball_dx = -ball_dx

    # ボールが外れた場合のリセット
    if ball_x < 0 or ball_x > screen_width:
        ball_x = screen_width // 2
        ball_y = screen_height // 2
        ball_dx = -ball_dx

    # 描画
    screen.fill(black)
    pygame.draw.rect(screen, white, (paddle1_x, paddle1_y, paddle_width, paddle_height))
    pygame.draw.rect(screen, white, (paddle2_x, paddle2_y, paddle_width, paddle_height))
    pygame.draw.circle(screen, white, (ball_x, ball_y), ball_radius)
    
    # 画面の更新
    pygame.display.flip()
    clock.tick(60)

pygame.quit()
sys.exit()

ゲームの実行

上記のコードを全てまとめて実行すると、ピンポンゲームが動作するはずです。WキーとSキーで左のパドルを、キーとキーで右のパドルを操作できます。

スクリーンショット 2024-07-30 18.37.23.png

おわりに

今回は、Pythonのpygameライブラリを使って簡単なピンポンゲームを作成しました。このコードを元に、得点システムや音の追加、パドルやボールのデザイン変更など、自分なりにカスタマイズしてみてください!

ぜひこの記事を参考にして、楽しいゲーム開発を始めてみてください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0