全2523文字
PR

人工知能(AI)の開発などで注目を集めるプログラミング言語「Python」では、「Panda3D」というライブラリーを使うことで、3次元(3D)ゲームも開発できる。Panda3Dの基本的な使い方を紹介するとともに、実際に遊べる「ビー玉迷路ゲーム」を開発する。

ステップ3
迷路をマウス操作で傾ける

 画面上でマウスを動かすと、迷路が傾くプログラムを作ります。

 このゲームは、main.pyを実行すると「init関数(初期化)」→「start関数(ゲームをスタートさせるための関数)」→「rollTask関数(実行中はフレーム更新ごとに呼び出されるタスク)」のように順番に処理を行っていきます。迷路をマウス操作で傾ける処理は、rollTask関数の中で行います。

 リスト8を、init関数の中に記述してください。start関数を呼び出す処理です。

リスト8 ●start関数を呼び出すコード(ステップ3)
リスト8 ●start関数を呼び出すコード(ステップ3)
[画像のクリックで拡大表示]

 続けて、リスト9を記述し、start関数を定義します。(1)では、rollTask関数を、タスクとしてタスクマネージャーに追加する処理を行っています。ここではstart関数の中でrollTask関数の呼び出ししか行っていませんが、このあとのステップ4で、ボールの初期位置を設定する処理を追加します。

リスト9 ●start関数を定義するコード(ステップ3)
リスト9 ●start関数を定義するコード(ステップ3)
[画像のクリックで拡大表示]

 続けて、リスト10を記述して、rollTask関数を定義します。リスト9でタスクマネージャーに追加されたrollTask関数は、フレーム更新ごとに呼び出される関数(タスク)です。

リスト10 ●rollTask関数を定義するコード(ステップ3)
リスト10 ●rollTask関数を定義するコード(ステップ3)
[画像のクリックで拡大表示]

 (1)では、mposという変数にマウスの横移動量と縦移動量を格納し、それぞれ迷路の横回転と縦回転に変換して処理しています。これによってマウスを動かすと迷路を傾ける操作を実現しています。

 このrollTask関数の中には、ステップ4で、ボールの速さの計算や、迷路の床や壁に衝突したときの処理を記述します。

 実行結果を図13に示します。画面上でマウスを動かすと、迷路が傾くようになりました。

図13 ●画面上でマウスを動かすと迷路が傾いた
図13 ●画面上でマウスを動かすと迷路が傾いた
[画像のクリックで拡大表示]