Pygame
Python用ゲームライブラリ(2D)
初出:2007年05/02 更新:2007年05/06
編集中
現在、役にたつ情報はほとんどありません。
PygameはPython用SDLのラッパー、クロスプラットフォーム(2D)ゲームライブラリ。OpenGLと組み合わせて3Dゲームにも使えます。Python2.5対応。
- 2Dグラフィック(スプライト、半透過サポート)
- 入力(キーボード、マウス、ゲームコントローラ)
- 効果音(wav, ogg, (mp3))
- 時間管理
- 文字列描画(マルチバイト文字列は不明. PILと組み合わせれば日本語も表示可能)
映像関連のサポートが弱い(Pymediaとの組み合わせで可能?)
参考サイトへのリンク
日本語の書籍はまだないようですが、オンラインドキュメントが結構豊富なので困りません。
- Pygame 総本山
- Pygame Documentation 本家ライブラリリファレンス
- Pygame入門 チュートリアル形式で各機能の解説。py2exeやPILの解説も有。
- Pygame関連文書 英文ドキュメントの和訳、FlashによるPygame実況中継
- Tkinterを使ってPyGameで日本語入力を 試していませんが、便利そう
- Python・Pygameで画像処理まとめ
OpenGL, PyOpenGL関連
悲しきかな、ゲームと言えば3Dという風潮になってしまいました。
- PyOpenGL Pythonで3DグラフィックスライブラリOpenGL(GL,GLU,GLUT)を使う
- PyOpenGL Man Pages PyOpenGLの関数リファレンス
- GLUTによる「手抜き」OpenGL入門 図解も交えてあり読みやすい。初期化、変換、ライティング (テクスチャの説明はなし)
- OpenGL入門 Windows対象。スクリーンショットつきで分かりやすい
- グラフィックス理論/プログラミング講義録 ライティング・テクスチャ周りの解説。ソースコードにコメントが少ない
- love unstable: PyGameでOpenGL Blenderで作れるraw, off, acフォーマットの3Dモデルデータを読み込む
- 2002年度 OpenGL勉強会 資料 基礎、ワイヤフレーム、3D、光源
メモ
glutReshapeFuncなどのコールバック設定でaccess violationが発生する
Pygame側でウィンドウを作成し手いる場合(glutCreateWindowを使っていない)、glut*Funcなどのコールバックを設定しようとすると発生するようです。Pygameでウィンドウを管理する場合、ウィンドウのサイズ変更はevent.type==VIDEORESIZEで検出します。
Code
最低限のメインループ
while 1:
# init ticks
ticks = pygame.time.get_ticks()
# Event
for event in pygame.event.get():
if event.type == QUIT or event.type == KEYDOWN and event.key == K_ESCAPE:
return
# Move, Draw
draw()
pygame.display.flip()
# delay
ticks_2 = pygame.time.get_ticks()
if ticks_2-ticks<INTERVAL:
pygame.time.wait(int(INTERVAL-pygame.time.get_ticks()+ticks))
