Gamemakerは、オブジェクト指向的にプログラムを書くことが出来ます。
そのため、オブジェクトとインスタンスの関係をよく理解しておくと、効率的なコードを書くことが出来ます。
オブジェクトとインスタンス
オブジェクトとインスタンスは、
設計図と実体の関係にある、と思ってください。
オブジェクト(設計図)には、ものの振る舞いを記述しますが、
飛行機の設計図に「飛ぶ」と書いてあっても、設計図が飛ぶわけではないですよね。
飛行機を飛ばすには、
設計図を元に、製品としての飛行機をまず作る必要があります。
この作られた製品が、インスタンスにあたります。
インスタンスは、それぞれX座標、Y座標、スピード、方角などの状態を保持しています。
(Game Makerでは、x, y, speed, directionという変数に格納されています。)
これらを変更することで、飛行機の飛ぶ方向や位置、スピードを自在に変更できます。
変数の参照
インスタンスには、作られた順にidが割りあたっていきます。
id番号.speed のような記法でも、インスタンスの変数を参照することができます。
オブジェクト名.speed のような記法もあります。
これは、オブジェクトから作成された全てのインスタンスを指定する記法です。
obj_ball.x = 0などとやると、obj_ballから作成された全てのインスタンスのX座標が0に揃えられます。
継承
あとでかく
イベントドリヴン
Gamemakerではゲームの仕組みを記述するのに、イベントドリヴンという仕組みを用いています。
イベントドリヴンというのは、「何が起こったら、どうする」でゲームの仕組みを記述するやりかたです。
簡単なシューティングの例を考えてみましょう。
・自機は移動できます。
・自機は前方に弾を撃つことができます。
・敵に当たるとゲームオーバー。
・敵を弾で撃ち落とすことが出来ます。
Game Makerで書くことを考えると、以下のように分解できます。
自機のオブジェクトはziki
弾のオブジェクトはtama
敵のオブジェクトはteki
・zikiはカーソルキーが押されると、対応した方向に移動する
・zikiはスペースキーが押されると、新しいインスタンスtamaを前方に撃つ
・zikiがtekiと衝突すると、ゲームを終了する。
・tekiとtamaが衝突すると、両方消滅する。
このようにルールを分解していくことで、ゲームを記述していきます。