Gon-Fla.net Flashゲーム・コンテンツ配信サイト

ごんたろうのプログラマじゃない人のためのFlashゲーム制作講座

Flash講座 TOPへ戻る
TOPページへ戻る

■第05章 : Flash(フラッシュ)ゲーム制作講座[変数をもっと深く②/ゲーム基礎編]



[2013年11月11日 更新]
対応バージョンはFlash MXです。アクションスクリプトは1.0です。

さて、みなさん右斜め上(浜村淳 風)

しつこく変数をお勉強してみましょう。変数はこの回で終わります。
変数は1つの値しかもてません。

簡単な小規模のゲームを作る場合は意識しなくても良いかと思いますが
(小規模でもどんなゲームによるんですけどね)
例えばRPGで各キャラのパラメータ
レベル、MAXHP、HP、MAXMP、MPなどを扱いたい場合
普通に変数を一個一個用意しても良いですが、
その場合、処理が面倒くさくなったり、管理がしにくくなります。
いや、出来ないわけではないんですけど、効率が凄く悪いです。
で、こういう場合にあるプレイヤーabcさんの複数のパラメータをもてる
変数の集まりというのが存在します。
この変数を「配列」この配列というものもあらゆるプログラミング言語で出てきます。
さて、この配列ですが、flashの場合ちょっとだけ癖があります。
変数に関して、Flash以外の言語C言語やjava、basicなどは
変数を使う前に「変数を作りますよー」ということをコンピュータに知らせるために
宣言」と言うことをします。
難しく考える必要はありません。例えば「testという変数を作りますよー」ってな
ことを書くのです。
flashの場合、こういう処理は必要なかったりします。
(やった方が良いんですけど、やらなくても動きます)
で、この変数の宣言はflashでは必要ないのですが、配列の場合は違います。
この変数は配列ですよってことを宣言しなくてはなりません。

ちなみに変数の宣言と配列の宣言の書き方を下記に記します。
----------------
//変数testの宣言
var test;
//配列の宣言
hairetsu=new Array();
---------------------
上記の
hairetsu=new Array();
で「hairetsu」という配列が作られました。
配列を作る場合は絶対にこの宣言が必要です。

で、この配列のどこに複数のパラメータを入れることが出来るのか?
ということですが、配列名に番号を振ってやるのです。
そうすることでhairetsuの1番目にレベル、2番目にhpのように
値を代入することが可能です。


ここで注意するべき点ですが、番号は1が最初ではなく「0が最初」になります。
さぁ、どんな書き方をするのか?下記に記します。
------------
hairetsu[0]=0;//レベル
hairetsu[1]=20;//MAXHP
hairetsu[2]=hairetsu[1];//HP
hairetsu[3]=5;//MAXMP
hairetsu[4]=hairetsu[3];//MP
------------
てな風に変数のお尻に「[]をつけて[]内に数値(番地)」を書くのです。
で、配列の2と4が数値ではなく、配列名になっております。
まぁ、そんなに難しいことではありませんが、HPよりも先にMAXHPを定義しておき
そのMAXHPの値をHPに入れているのです。
仮に
hairetsu[1]=20;//MAXHP
hairetsu[2]=20;//HP
のように書くと、MAXHPの値が変更になった場合、MAXHPとHPの両方を
書き換えなくてはなりません。
面倒くさいですよね。HPにMAXHPの値を代入することで
書き換える手間が1つ省けます。同時にMAXHPが20なのにHPが30とかに
なることも防げます。一石二鳥です。

さて、この配列の便利なところは[]内が数値のため
番号を指定しなくても、数値の入った変数を代入することで
各配列の番地にアクセスすることが出来るという点です。
どういうコトかと言いますと
例えば、trace()と言う関数があります。
trace()の()の中に何か文字や、数値、変数、プロパティを入れ、
flashアプリからのムービーを実行するとその値が出力ウィンドウに表示される
というものです。

このtraceを使って例を説明します。
まだ、ここまでの回では説明していませんが、forループ文というものがあります。
ループ?無限ループとか良く言いますが、そのループです。
同じ処理を何回か繰り返す、と言うときに使います。
forループの説明は別の回にするとして、とりあえずforループと配列を
使った例を書きます。

--------------
for(a=0;a<=4;a++){
trace(hairetsu[a]);
}
--------------
と書くと、先ほど書いた値が出力ウインドウに表記されます。
ループを使わないで書くと
trace(hairetsu[0]);
trace(hairetsu[1]);
trace(hairetsu[2]);
trace(hairetsu[3]);
trace(hairetsu[4]);
のようになります。
10個くらいまでは良いとして
100とかあったら嫌でしょ?(笑)
面倒くさいでしょ?(笑)
そういう場合に配列やループ文は重宝するのです。

ちなみにテトリスや、戦略系シミュレーションゲーム(マスのあるヤツ)などは
配列を上手く使って作るのですよ。


以上。

次の回までしばらくお待ちください……。
ご意見、ご感想はGon-Fla.netのコメント掲示板に書き込みください。
2011/03/10 現在スパム対策のためBBSは使用できなくなっております・・・
申し訳ございません。


【この講座の評価】
今後の講座の参考にさせていただきたいので、よろしければ評価をお願いします。
カーソルは指に変わりません(リンクではありません)小さなウインドウが出ます。
とてもよい(わかりやすい) ふつう(まぁまぁわかる) わからない

13/11/11-アップロード

Flash講座 TOPへ戻る

TOPページへ戻る