[保存版][初心者向け] MacOS環境にPygameをインストールしてゲームを作る方法まとめ

Pygameってなに?

Pygame(パイゲーム)は、Pythonというプログラミング言語を使って、ゲームを作るためのツール、つまりライブラリのことです。

このライブラリを使うことで、面倒なグラフィック処理やサウンド処理などを簡単に記述し、自分のアイデアを形にしたゲームを作ることができます。

Screenshot

Pygameを使うための環境の準備

PygameはPythonのライブラリなので、まずはPythonをインストールするところから始めます。

開発で使うIDEはVSCode (Visual Studio Code)を利用します。

ターミナルの起動

一番簡単なのは「Homebrew」をインストールしてPythonをインストールする流れとなります。

まずはMacOSのターミナルを起動します。ターミナルはアプリケーションの「ユーティリティ」フォルダ内にあります。

Screenshot

ターミナルを起動すると下記のような画面が表示されます

Screenshot

Homebrewのインストール

以下をコピー&ペーストして実行する。

% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

上記実行するのみで、インストールは完了します。

Pythonのインストール

準備が整ったので早速Pythonのインストールをしていきたいと思います。

まずはインストール可能なバージョンをチェックします。

今回はPython3系をインストールしていきます。

% brew search python@3
==> Formulae
python@3.10     python@3.12     python@3.8      ipython         jython
python@3.11     python@3.13     python@3.9      bpython         cython

Homebrewでは「brew」と最初に入力して、いろいろなアクションをしていきます。 上記より、最新の「3.13」をインストールしていきたいと思います。

% brew install python@3.13
〜〜〜〜〜〜〜
==> python@3.13
Python is installed as
  /usr/local/bin/python3

Unversioned symlinks `python`, `python-config`, `pip` etc. pointing to
`python3`, `python3-config`, `pip3` etc., respectively, are installed into
  /usr/local/opt/python@3.13/libexec/bin

See: https://docs.brew.sh/Homebrew-and-Python

上記のようにインストール先のファイルパスや利用できるコマンドが表示されます。

これでインストールは完了です。

実際のバージョンを確認していましょう。

% python3 -V
Python 3.13.0

正常にインストールされていることがわかりました。

複数のバージョンを切り替えて開発したい方は「pyenv」というパッケージをインストールして使うと良いです。こちらについては今回は割愛しておきます。

VSCodeのインストール

VSCodeは、Microsoftのサイトからダウンロードしてインストールします。

Screenshot

下記のMac版をダウンロードしてインストールしてください。

Screenshot

zipファイルがダウンロードされるので、解凍ししてください。 解凍したあとは、そのファイルをアプリケーションフォルダに移動します。

Screenshot

VSCodeをインストールし終わったらVSCodeでPython開発するための拡張機能をインストールします。左側にブロックが積み上がったようなアイコンがあるので、そのアイコンを選択します。その後検索する部分に「Python」と入力すると、拡張機能が表示されます。

「インストール」をクリックすることでVSCode上でPythonを効率よく開発するためのツールが利用できるようになります。

Screenshot

これで開発環境が整いました。

Pygameのインストール

Homebrewを使ってPythonをインストールするとpipコマンドを利用することができます。Pygameはこのpipコマンドを使ってインストールします。

% pip3 install pygame
Collecting pygame
  Downloading pygame-2.6.1-cp313-cp313-macosx_10_13_x86_64.whl.metadata (12 kB)
Downloading pygame-2.6.1-cp313-cp313-macosx_10_13_x86_64.whl (13.1 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13.1/13.1 MB 50.7 MB/s eta 0:00:00
Installing collected packages: pygame
Successfully installed pygame-2.6.1

[notice] A new release of pip is available: 24.2 -> 24.3.1
[notice] To update, run: pip install --upgrade pip

これでインストールは完了です。

pygameインストール補足

もし、複数のバージョンでライブラリを管理したい場合や、インストールがうまくいかない場合は、仮想環境を作成してその環境内にインストールしてください。

仮想環境は「-m venv [仮想環境名]」で作成することができます。作成後にアクティブ化することで仮想環境上での実行が可能となります。

※ 仮想環境を作成するフォルダに移動してから実行することをお勧めします。

% python3 -m venv my_pygame
% source my_pygame/bin/activate
(my_pygame) ~ % pip install pygame
Collecting pygame
  Using cached pygame-2.6.1-cp313-cp313-macosx_10_13_x86_64.whl.metadata (12 kB)
Using cached pygame-2.6.1-cp313-cp313-macosx_10_13_x86_64.whl (13.1 MB)
Installing collected packages: pygame
Successfully installed pygame-2.6.1

[notice] A new release of pip is available: 24.2 -> 24.3.1
[notice] To update, run: pip install --upgrade pip

アクティブ化すると、コマンドの部分に(仮想環境名) が表示されます。 この状態でpygameをインストールすると仮想環境上にインストールされ、本体側に影響はなくなります。

また、アクティブ化することで、左側に (仮想環境名) が表示されます。

実際にインストールされているパッケージを確認してみます。

(my_pygame) ~ % pip freeze
pygame==2.6.1

仮想環境を終了したい場合は「deactivate」で終了することができます

% deactivate

アクティブ化解除後に、pip freezeを実行してみてください。 こちらにはインストールされていないことがわかります。

実際にPygameを動かしてみる

今回は(~/Development/Python)フォルダを作成しそのフォルダに仮想環境と実際にコードを書くファイルを作っておきます。

=========== 事前準備 ===========

% mkdir ~/Development/Python
% cd ~/Development/Python
% touch game.py
% pwd
/Users/xxxxxxxxx/Development/Python
% ls
my_pygame
game.py

==== 以下仮想環境アクティブ化 ====

% python3 -m venv my_pygame
% source my_pygame/bin/activate   〜〜〜 アクティブ化
(my_pygame) % deactivate       〜〜〜 アクティブ化解除
%

上記のように、Pythonフォルダの中に「my_pygame」という仮想環境のフォルダと「game.py」というファイルが作られているかと思います。

コマンドでファイルを作る場合は「touch」コマンドで簡単に作成することができます。 フォルダ内は下記のような構成になっているかと思います。

VSCodeを起動して、先ほどのフォルダを開きます。 [ファイル] – [フォルダーを開く]をクリックし、先ほどのフォルダを選択します。 下記のような構成になっているかと思います。

Python
 ├ game.py       ---- touchコマンドで作成したファイル
 ┗ my_pygame      ---- venvで作成した仮想環境
   ├ bin
   ├ include
   ├ lib
   ┗ pyvenv.cfg

「game.py」をクリックして開きます。

Screenshot

何も書かれていないPythonファイルが右側に開かれました。 その下の方に、ターミナルが表示されているかと思います。もし表示されていない場合は、上のメニューにある「ターミナル」を選択し「新しいターミナル」をクリックして開きます。

Screenshot

そのターミナル上で下記のコマンドを実行します。 VSCode上でも仮想環境にアクセスしておきます。

% cd ~/Development/Python
% source my_pygame/bin/activate
(my_pygame) ~ % python game.py

何も表示されませんが、Pythonのファイルは上記のように「python [実行ファイル]」と入力して実行します。

では、簡単なコードを書いていきます。今回はゲームというより単純にボールが画面情報を動き回るものを用意しました。

import pygame

# (1) 初期化
pygame.init()

# (2) 画面の設定
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("跳ねるボール")

# ボールの設定
ball_x = 400
ball_y = 300
ball_radius = 10
ball_speed_x = 1
ball_speed_y = 1

# (3) メインループ
running = True
while running:
    # (4) 終了イベント
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # ボールを動かす
    ball_x += ball_speed_x
    ball_y += ball_speed_y

    # (5) 壁との衝突判定
    if ball_x + ball_radius > screen_width or ball_x - ball_radius < 0:
        ball_speed_x *= -1
    if ball_y + ball_radius > screen_height or ball_y - ball_radius < 0:
        ball_speed_y *= -1

    # (6) 画面をクリアする
    screen.fill((255, 255, 255))

    # ボールを描く
    pygame.draw.circle(screen, (0, 0, 255), (ball_x, ball_y), ball_radius)

    # 画面を更新する
    pygame.display.update()

pygame.quit()
  1. pygame.init()で初期化処理を行います。
    この初期化処理は最初に必ず実行する必要があります。
  2. 画面の大きさは「pygame.display.set_mode()」関数で設定します。
    ウィンドウのサイズや表示モードなどを設定するための関数です。
    このset_mode()の引数には、横幅と縦幅のタプル型の値を設定してあげます。
    フルスクリーンなどオプションも用意されています。
    例:screen = pygame.display.set_mode((800, 600), pygame.FULLSCREEN)
    • pygame.FULLSCREEN: フルスクリーンモード
    • pygame.RESIZABLE: ウィンドウサイズを変更可能
    • pygame.NOFRAME: ウィンドウの枠を表示しない
  3. while文を使ってずっとループさせます。
    そのループ内の処理は下記の通りです 。
    画面を終了したら、プログラム自体を終了するコードを書きます。
    pygame画面のイベント情報を取得し、QUIT(終了)イベントを取得した場合は、この処理を終了することを表しています。
  4. イベントの種類は下記のようなものがあります。
    • pygame.QUIT: ウィンドウの閉じるボタンが押された
    • pygame.KEYDOWN: キーが押された
    • pygame.KEYUP: キーが離された
    • pygame.MOUSEBUTTONDOWN: マウスボタンが押された
    • pygame.MOUSEBUTTONUP: マウスボタンが離された
    • pygame.MOUSEMOTION: マウスが移動した
  5. ボールが壁に当たったかどうかの衝突判定を記載します。
    • if ball_x + ball_radius > screen_width or ball_x – ball_radius < 0:: ボールが画面の左右の端に達した場合、x方向の速度の符号を反転させて、跳ね返るようにします。
    • if ball_y + ball_radius > screen_height or ball_y – ball_radius < 0:: ボールが画面の上下の端に達した場合、y方向の速度の符号を反転させて、跳ね返るようにします。
  6. 残りの処理は、ボールを毎回絵画してしまうと画面がボールで埋まってしまうので、一度画面をクリアし、その後にボールを描きます。その描いたものを更新することで一つのボールがずっと動いているように見せています。

Pygameが動かない、インストールできない

ImportError: No module named pygame が発生した

仮想環境を利用せず普通にインストールした際に結構発生します。

Traceback (most recent call last):
  File "/Users/hirokazu/Development/working/python/my_pygame/source/game.py", line 1, in <module>
    import pygame
ModuleNotFoundError: No module named 'pygame'

こういう場合は、前章で述べたように仮想環境上で実行させてください。(venvを利用する)

pipがコマンドとして認識されない

homebrewから一度pythonをアンインストールして再インストールしてみてください。 もしそれでも解決しない場合は、PATHが正しく設定されていない可能性があります。

以下を実行してみるのもありです。

% export PATH="$PATH:/usr/local/lib/python3.13.0/site-packages"
% source ~/.zshrc
% which pip

他にもMac環境でエラーが発生した方がいましたら、問い合わせなどで教えてください。
いろいろ調べてこちらを更新していきたいと思います。

まとめ

まずはMacOSでPygameというライブラリを使って動かしてみるところまで行いました。 これからPythonを利用してゲームを作ってみたい方などはこのPygameを利用して体験してみるのが良いかと思います。

Pythonの開発で便利な拡張機能については下記でまとめていますので、必要な場合は参考にしてみてください。

タイトルとURLをコピーしました