7.オブジェクトをグループ化しよう!(配列)

 前々回、タイマーオブジェクトを使って、オブジェクトを同じリズムで動かしてみました。
 ここでは「配列」を使って、オブジェクトをグループにまとめ、グループで実行させてみましょう。

 7-1.配列とは?


 まず、「配列」という言葉について説明します。
 あなたがカスタードクリームのシュークリームとチョコクリームのシュークリームを作っていたとします。
 それぞれ、何個作ったかわかるようにするにはカスタードクリームのシュークリームとチョコクリームのシュークリームは別々のお皿に並べることでしょう。また、お店で売る場合も種類別にお皿や箱に分けるはずです。
 このお皿や箱が「配列」です。

 オブジェクトをひとまとめに整理したいときに利用します。配列に入れたオブジェクトには配列番号が1番から順番につきます。また、あらかじめ配列の大きさを指定する必要はありません。(可変長)


かめの3兄弟=配列!作る。
かめの3兄弟!(かめ太郎)入れる。
かめの3兄弟! 「! 15度 右回り 20歩 歩く」 それぞれ実行。」

(解説)
「かめの3兄弟」という配列を作り、そこにオブジェクトを入れます。
「それぞれ実行」で配列に入っているオブジェクト全部にメッセージを送って、実行させることができます。


//オブジェクトの生成
かめ太郎=タートル ! 作る。
かめ次郎=タートル ! 作る。
かめ三郎=タートル ! 作る。
かめ兄弟のペース=タイマー ! 作る。
かめ次郎! "ayumiAka.gif" 変身する。
かめ三郎! "ayumiKiiro.gif" 変身する。

//配列の生成
かめの3兄弟=配列!作る。

//配列に入れる
かめの3兄弟!(かめ太郎)入れる。
かめの3兄弟!(かめ次郎! 120度 右回り)入れる。
かめの3兄弟!(かめ三郎! 240度 右回り)入れる。

//かめ兄弟の実行
かめ兄弟のペース! 0.5秒 間隔 10秒 時間「
かめの3兄弟! 「! 15度 右回り 20歩 歩く」 それぞれ実行。」実行。

*3匹のカメが一緒に動きます。


同じ動作をまとめてさせたい場合や、オブジェクトを
数値や文字もオブジェクトですから、数値や文字も配列に入れて、処理することができます。


 7-2.配列のオブジェクトを使い分ける。

 配列に入れたオブジェクトから、一つを取り出して、それだけに実行させたいこともあるでしょう。
 次のサンプルプログラムを見てください。変数を使って、配列に入っている順番に命令を実行しています。

配列名! 番号 見る。

(解説)
配列に入ったオブジェクトは1番から順番に番号が付けられます。
 番号を指定して「見る」で配列から、その配列番号のオブジェクトを取り出すことができます。



//オブジェクトの生成
かめ太郎=タートル ! 作る。
かめ次郎=タートル ! 作る。
かめ三郎=タートル ! 作る。
かめ兄弟のペース=タイマー ! 作る。
かめ次郎! "ayumiAka.gif" 変身する。
かめ三郎! "ayumiKiiro.gif" 変身する。

//配列の生成
かめの3兄弟=配列!作る。

//配列に入れる
かめの3兄弟!(かめ太郎)入れる。
かめの3兄弟!(かめ次郎! 120度 右回り)入れる。
かめの3兄弟!(かめ三郎! 240度 右回り)入れる。

//かめ兄弟を順番に実行させる。
X=1。

  出番=かめの3兄弟! (X) 見る。

  かめ兄弟のペース! 0.5秒 間隔 3秒 時間「
  (出番)! 15度 右回り 20歩 歩く。
  」実行。
  かめ兄弟のペース! 待つ。

 X=(X+1)。
」! 3回 繰り返す。

*3匹のカメが順番に動きます。

 このプログラムは次のように書いても同じように実行できます。
 X=(X+1)と計算させなくても、ドリトルは繰り返すたびに何回繰り返したかを数えています。

//かめ兄弟を順番に実行させる。
「|X|
  出番=かめの3兄弟! (X) 見る。

  かめ兄弟のペース! 0.5秒 間隔 9秒 時間「
    (出番)! 15度 右回り 20歩 歩く。
  」実行。
  かめ兄弟のペース! 待つ。
」! 3回 繰り返す。



 7-3.配列の中身を入れ替える。

 配列の中に入れた物の中身を入れ替えたいことがあります。
 その場合、番号を指定して、上書きをしてやると中身を変えることができます。

配列名! 番号 オブジェクト 上書き。

(解説)
配列に入ったオブジェクトは1番から順番に番号が付けられます。
 番号を指定して「見る」で配列から、その配列番号のオブジェクトを取り出すことができます。




上のサンプルプログラムの「かめの3兄弟!(かめ三郎! 240度 右回り)入れる。」の下に次の行を追加して、実行してみる。


かめの3兄弟! 2 (かめ太郎) 上書き。






 7-4.二次元配列

3つ並べゲーム等を作る際には2次元配列(縦横のマス目の入れ物)が必要になります。
その場合は配列の中に配列を入れる形で二次元配列を作ります。
 

(例)
カメアパート=配列!作る。
カメアパート!(かめの3兄弟)入れる。


次へ

前へ


(c) 2003 長谷川元洋 All rights researved. ghase@logob.com