Cocos2d を用いたスプライトの表示と操作
1. エグゼクティブサマリー
本記事では,cocos2d を用いて Python でスプライトを表示する方法を扱う.画像ファイルをスプライトとしてウィンドウに表示する基本手順と,フェードインや移動といったアクション操作を解説する.
2. 前準備(必要ソフトウェアの入手)
ここでは、最低限の事前準備について説明する。機械学習や深層学習を行う場合は、NVIDIA CUDA、Visual Studio、Cursorなどを追加でインストールすると便利である。これらについては別ページ https://www.kkaneko.jp/cc/dev/aiassist.htmlで詳しく解説しているので、必要に応じて参照してください。
Python 3.12 のインストール(Windows 上) [クリックして展開]
以下のいずれかの方法で Python 3.12 をインストールする。Python がインストール済みの場合、この手順は不要である。
方法1:winget によるインストール
管理者権限のコマンドプロンプトで以下を実行する。管理者権限のコマンドプロンプトを起動するには、Windows キーまたはスタートメニューから「cmd」と入力し、表示された「コマンドプロンプト」を右クリックして「管理者として実行」を選択する。
winget install --scope machine --id Python.Python.3.12 -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "/quiet InstallAllUsers=1 PrependPath=1 Include_pip=1 Include_test=0 Include_launcher=1 InstallLauncherAllUsers=1"
--scope machine を指定することで、システム全体(全ユーザー向け)にインストールされる。このオプションの実行には管理者権限が必要である。インストール完了後、コマンドプロンプトを再起動すると PATH が自動的に設定される。
方法2:インストーラーによるインストール
- Python 公式サイト(https://www.python.org/downloads/)にアクセスし、「Download Python 3.x.x」ボタンから Windows 用インストーラーをダウンロードする。
- ダウンロードしたインストーラーを実行する。
- 初期画面の下部に表示される「Add python.exe to PATH」に必ずチェックを入れてから「Customize installation」を選択する。このチェックを入れ忘れると、コマンドプロンプトから
pythonコマンドを実行できない。 - 「Install Python 3.xx for all users」にチェックを入れ、「Install」をクリックする。
インストールの確認
コマンドプロンプトで以下を実行する。
python --version
バージョン番号(例:Python 3.12.x)が表示されればインストール成功である。「'python' は、内部コマンドまたは外部コマンドとして認識されていません。」と表示される場合は、インストールが正常に完了していない。
AIエディタ Windsurf のインストール(Windows 上) [クリックして展開]
Pythonプログラムの編集・実行には、AIエディタの利用を推奨する。ここでは、Windsurfのインストールを説明する。Windsurf がインストール済みの場合、この手順は不要である。
管理者権限のコマンドプロンプトで以下を実行する。管理者権限のコマンドプロンプトを起動するには、Windows キーまたはスタートメニューから「cmd」と入力し、表示された「コマンドプロンプト」を右クリックして「管理者として実行」を選択する。
winget install --scope machine --id Codeium.Windsurf -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --custom "/SP- /SUPPRESSMSGBOXES /NORESTART /CLOSEAPPLICATIONS /DIR=""C:\Program Files\Windsurf"" /MERGETASKS=!runcode,addtopath,associatewithfiles,!desktopicon"
powershell -Command "$env:Path=[System.Environment]::GetEnvironmentVariable('Path','Machine')+';'+[System.Environment]::GetEnvironmentVariable('Path','User'); windsurf --install-extension MS-CEINTL.vscode-language-pack-ja --force; windsurf --install-extension ms-python.python --force; windsurf --install-extension Codeium.windsurfPyright --force"
--scope machine を指定することで、システム全体(全ユーザー向け)にインストールされる。このオプションの実行には管理者権限が必要である。インストール完了後、コマンドプロンプトを再起動すると PATH が自動的に設定される。
【関連する外部ページ】
Windsurf の公式ページ: https://windsurf.com/
必要なライブラリのインストール [クリックして展開]
管理者権限のコマンドプロンプトで以下を実行する。管理者権限のコマンドプロンプトを起動するには、Windows キーまたはスタートメニューから「cmd」と入力し、表示された「コマンドプロンプト」を右クリックして「管理者として実行」を選択する。
pip install -U cocos2d
3. 実行のための準備とその確認手順(Windows 前提)
3.1 プログラムファイルと画像ファイルの準備
第5章のソースコードをテキストエディタ(メモ帳,Spyder 等)に貼り付け,main.py として保存する(文字コード:UTF-8).
表示させたい PNG 形式の画像ファイルを,プログラムファイルと同じディレクトリに配置する.ファイル名に全角文字(漢字など)は使わないこと.
3.2 実行コマンド
コマンドプロンプトでファイルの保存先ディレクトリに移動し,以下を実行する.
python main.py
3.3 動作確認チェックリスト
| 確認項目 | 期待される結果 |
|---|---|
| スプライト表示プログラムの起動 | ウィンドウが開き,指定した画像がウィンドウ中央(320, 240)に表示される |
| 画像ファイルの配置 | プログラム中で指定したファイル名の PNG 画像がカレントディレクトリに存在する |
| カレントディレクトリの確認 | import os; print(os.getcwd()) の実行で,画像ファイルを配置したディレクトリのパスが表示される |
| フェードイン・移動プログラムの起動 | 青色背景のウィンドウが開き,スプライトがフェードイン後に左方向へ移動する |
| ウィンドウの終了 | 右上の「x」をクリックするとプログラムが終了する |
4. 使い方・操作手順・演習問題
4.1 スプライト表示の操作手順
- Spyder で第5章のスプライト表示プログラムを,エディタの画面にコピー&ペーストして実行する.
- Python コンソールで,カレントディレクトリを確認する.
次を実行
import os print(os.getcwd())
関係する部分を拡大すると次のようになる.
- Windows で,いま確認したディレクトリを開く.
このとき「//」を「\」に読み替えること
- 表示させたい画像を探す.PNG 形式(拡張子が「.png」)が望ましい.
ファイル名に全角文字(漢字など)は使わないこと
- 画像ファイルを,さきほど確認したディレクトリにコピーする.
- Python プログラムの中のファイル名を,この画像ファイルのファイル名に設定する
- 実行ボタンをクリックする.
- 結果を確認したら,右上の「x」をクリックして終了する.
4.2 フェードイン・移動の操作手順
- Spyder で第5章のフェードイン・移動プログラムを,エディタの画面にコピー&ペーストして,実行ボタンをクリックする.
- 結果を確認したら,右上の「x」をクリックして終了する.
4.3 演習問題
- PNG 形式の画像ファイルを準備し,
os.getcwd()で確認したディレクトリに置きなさい. - 上のプログラムを実行しなさい.画像ファイル名のところは正しく設定すること.
5. ソースコード
5.1 スプライト表示プログラム
cocos2d を用いてスプライトをウィンドウに表示するプログラムである.
import cocos
from cocos.sprite import Sprite
from cocos.layer import Layer
from cocos.director import director
class Actors(Layer):
def __init__(self):
super().__init__()
self.actor = Sprite('lena_std.png')
self.actor.position = 320, 240
self.add(self.actor)
director.init()
director.run(cocos.scene.Scene(Actors()))
5.2 フェードイン・移動プログラム
フェードインとスプライトの移動を行うプログラムである.
import cocos
from cocos.layer import ColorLayer
from cocos.sprite import Sprite
from cocos.actions import FadeIn, MoveBy, Delay
from cocos.director import director
class Actions(ColorLayer):
def __init__(self):
super().__init__(52, 152, 219, 255)
self.sprite = Sprite('lena_std.png')
self.sprite.position = 320, 240
self.sprite.opacity = 0
self.add(self.sprite)
self.sprite.do(FadeIn(2) + Delay(0.5) + MoveBy((-150, 0), 2))
director.init()
director.run(cocos.scene.Scene(Actions()))
6. まとめ
6.1 Sprite クラスによるスプライト表示
Sprite クラスに画像ファイルを指定し,position 属性で座標を設定することで,スプライトをウィンドウに表示できる.
6.2 Layer と ColorLayer
Layer を継承したクラスにスプライトを追加し,Scene に渡すことで描画が行われる.ColorLayer を用いると背景色を RGBA 値で指定できる.
6.3 アクションによるアニメーション
FadeIn や MoveBy などのアクションをスプライトに適用することで,アニメーションを実現できる.アクションは「+」演算子で連結し逐次実行する.
6.4 カレントディレクトリと画像ファイルの配置
os.getcwd() でカレントディレクトリを確認し,そこに PNG 形式の画像ファイルを配置する.ファイル名に全角文字は使わない.
6.5 director による初期化と実行
director.init() でウィンドウを初期化し,director.run() に Scene を渡して実行する.終了はウィンドウ右上の「x」をクリックする.