オブジェクトと変数
概要
ここでは、HackforPlayに登場するキャラクターや変数を例に、オブジェクトや変数とは何か、そして定義の仕方による動作の違いについて解説します!
HackforPlayに登場する全てのものはオブジェクトである!
HackforPlayでステージを作ったことがあれば、全てのオブジェクト(モノ)には必ず中身があることに気がついているはずです。(ホーム、プレイヤー、ハンター、いわ、ビームなどなど)
アセット一覧を開いてキャラクターを追加すると、ゲーム画面にはそのキャラクターが出てきました。また、同時にキャラクターの中身を見ることができるようになって、そこからキャラクターのパラメーターや動きを作ることができました。
そして、出現したキャラクターはみんな同じ中身になっています。
この構造を図にしてみるとこんな感じです。
このような、オブジェクトごとにパラメーターや動きを付ける仕組みを「オブジェクト指向」と呼んだりします。
ゾンビの設計図を作って、そのゾンビを出現させるという2つの手順が必要ですが、出現させるゾンビは全て設計図のコピーになり、上の図だと5体のゾンビは全て同じ中身になっています。
こうすることで、ゾンビ1つ1つのプログラムを書く必要がなくなって、修正がしやすくなるわけです。便利ですね!
プログラムを知っている方は、クラスやインスタンスという言葉を思い浮かべると良いかもしれません。
ただ、厳密にはクラスではないので注意が必要です!クラスのような継承も(恐らく)ありません!
変数とは
一般的にプログラムは入力されたデータをバケツリレーのように渡しながら処理を行います。
このデータの入れ物であるバケツは「変数」と呼ばれます。
例えば、こちらは緑色のゾンビの「つくられたとき」に書かれているコードの一部です。
this.なかま = なかま.モンスター
this.たいりょく = 3
this.こうげきりょく = 1
この「なかま」、「たいりょく」、「こうげきりょく」は全て変数です。
では直前の「this」は何でしょうか。(「this」は日本語で「この」とか「これ」という意味です。)
実は「this」はプログラムの持ち主を指しています。つまりこの場合は緑色のゾンビです。
まとめると、このようになります。
コード | 意味 |
---|---|
this.なかま = なかま.プレイヤー | 緑色のゾンビのなかま は なかま.モンスター ※緑色のゾンビの所属する陣営を設定しています。(ここではモンスターの仲間) |
this.たいりょく = 3 | 緑色のゾンビのたいりょく は 3 |
this.こうげきりょく = 1 | 緑色のゾンビのこうげきりょく は 1 |
※赤字は変数
それぞれの変数に値を入れることで、ゾンビが所属する陣営、体力、攻撃力といったパラメーターを設定しています。
変数を確かめてみる
オブジェクトは設計図からコピーされた中身を持っている、と書きました。
本当にそうなっているか、下のステージをプレイしてみてください。
ゾンビを5匹倒してお金を25集めるとクリアです。
https://www.hackforplay.xyz/works/KeqVKJpr98cKLU2TOpob
ゲームに登場するゾンビそれぞれに体力が3ずつ割り当てられていることが確認できるはずです...!!
そうすることで、例えば「ゾンビの体力を確認して、少なかったら増やす」のようなゾンビをサポートするモンスターを作ることもできます。
他の変数の使い方
上のステージで出てくるゾンビは、みんな同じ設計図のコピーから出来ていて、当たり前ですがゾンビ1体にダメージを与えても、他のゾンビはダメージを受けません。つまりコピーされた後は別々の存在になります。
次は、ゾンビ1体にダメージを与えた時、他のゾンビにもダメージを与える方法を考えてみます。
このステージをプレイしてみてください。
ゾンビもスライムもダメージを受けると、それぞれ仲間もダメージを受けます。
https://www.hackforplay.xyz/works/NoklJ2zzYT0hRMGwo37G
実現には色々な方法が考えられますが、同じ設計図内でも共有できる変数を使っています。
ここでは(一般的な言い方ではありませんが)「オブジェクト変数」と呼ぶことにしておきましょう。
コメント
最新を表示する
NG表示方式
NGID一覧