【HSPプログラミング講座#12】多数のボールを同時に扱うための変数を覚えよう
タイトルとURLをコピーしました
HSP言語プログラミング講座も12回目となりました(しんどい。。笑) 前回のプログラミングでは、ボールをジャンプさせて着地するまでのことをやりましたが、かなりゲームっぽい動きをさせることができましたね。あれがボールじゃなくてマリオみたいなキャラクターだったら本物っぽいですよね。
前回のボールのプログラミングをしていて思ったことなんですが、1個じゃなくて10個とか100個とか、たくさんの数を表示したいとなったら、変数の数もとんでもないほど用意しなければならないですよね。変数を100個も書いたら指が壊れちゃいそうです・・・
ということで、今回は変数をまるっと1つにまとめて大量に扱うことができる「配列変数」というやつを使ってみたいと思います。「配列変数はたくさんの変数がまとまったもの」と覚えておけばそれでOKです。「配列変数」だと長いので、略して単に「配列」と言ったりします。
配列の使用方法を先に説明しましょう。広辞苑。。いや説明書を見てみると配列を使うときには準備が必要なようです。それは3行目の「 dim 」です。これは配列を用意するぞぉー!って宣言をしています。。 その後に配列の名前を決めます。今回は配列の名前を「配列」にしてしまったのでややこしい事になってしまいました(汗) まぁでも先ほども説明した通り、配列は変数なので、変数と同じように名前をつけないといけません。 次に用意する入れ物の数を書きます。今回は5個にしました。なので変数が5個用意されたようなものです。 ここまでは簡単ですね!
5~9行目では、用意された5つの入れ物の中に数字を入れています。そのときに配列名に続けてカッコで数字が書かれていますが、0から4までの5つの入れ物を指定してから数字を入れています。0から始まるので注意してくださいね。
11~15行目で配列1つ1つの中身を表示させています。 もう一つサンプルプログラムを用意しましょう。
今度は配列に数字じゃなくて文字を入れてみました。それだけです。。。(汗) あっ、ただ11~15行目の表示は配列の数字の大きい方から表示しているので「あいうえお」が逆になって表示されます。。それだけです。。。(涙)
配列について色々と試していたら、エラーになってしまうやりかたを偶然にも発見してしまいました。それが下のプログラムです。
これは配列を2つ用意して、配列(0)には数字の1を入れて、配列(1)には文字の「あ」を入れています。本来であれば、これを実行すると、「1」と「あ」が表示されるはずですよね!? でもエラーが出るんです。 エラーの画面は下の図です。
ちょっと何言っているかわからないですよね(汗) 不思議なことに他のプログラミング言語もエラーの内容って何言っているかわからないんです!! これなんとかなりませんかねぇ~
でもワタクシ「リサル」は天才ですから! お答えしましょう! これは6行目が問題だと言っています。「異なる型を持つ配列変数に代入しました」と書いてあります。これは配列(0)には数字を入れたのに、配列(1)に文字を入れるんじゃねーよ! と怒っているわけです。 数字なら数字だけ、文字なら文字だけを入れなさいと言っています。 完全に「頑固じじぃ」状態です。 牛乳にハチミツ混ぜるんじゃねーよ!みたいな。素材の味を大切にしろよと。そ~言ってるわけです。 困ったもんですねぇ~
とりあえずルールは守らなければなりませんので、しっかりと覚えておきましょう。
さぁ、続いては配列変数の便利な使い方を説明していきます。冒頭の説明でボールを100個とか用意するのは大変だと言いましたが、今のところ「配列使ってもたいして手間は変わらないじゃん」って思ってますよね? でもココからが「配列変数」と「繰り返し処理」の”超ウルトラスーパーコンボ”ですよ!
下のプログラムをしっかり頭にブチ込んでおいてくださいね!
3行目で配列変数を5個用意して、5~9行目で中身を入れています。ここまでは普通です。 最大のポイントは11~13行目の繰り返し処理です。mes命令の配列変数の中身を表示するところを見てください。それぞれの入れ物をcnt変数を使って0~4までの数字が自動的にカウントされる仕組みを利用しています。 この仕組みを利用することによって100個でも1万個でもボールを簡単に表示できちゃうんです!
わかりますかね? この超便利な仕組み。
では次にいきましょう。少しややこしくなりますよ! しっかりついてきてくださいね。
まず簡単な説明から。これまでやってきた配列は1次元配列といいます。イメージとしては横にダンボールの箱を5つ並べて、数字とか文字を入れました。(想像してみてください) 次に勉強するのは2次元配列と言います。本棚をイメージするとわかりやすいかもしれません。縦にも横にも入れる場所がありますよね。そんな感じです(汗) とりあえずプログラムを見てください。
3行目で配列名のあとに、2と3の数字を書いていますね。2個の変数が3セットあるみたいな感じです。掛け算のような感じなので、6個の変数が用意されたことになります。もう少しわかりやすいようにイメージを下の図にしました。
本棚みたいな絵を書いたつもりなんですけど。。。イメージできました? まぁイメージするのは勝手なんですけど、他にも、この2次元配列のよくある使われ方の1つとしてボールのx座標とy座標を入れておくのに使います。「関連している2つのものを入れるみ」たいな感じですかね。
さて、いよいよボールを100個表示してみますか! 2次元配列は使わずに、わかりやすいように1次元配列でやってみますね。驚くほど短いプログラムで終わりますから注目ポイントですよ!
はい、たったこれだけのプログラミングでボールを100個、ランダムな位置に表示することができました。スゴくないですか? 7~8行目の rnd は覚えてますか? ランダムな数字を発生させてくれる命令ですよ! それをx座標と、y座標に100回繰り返して入れてますからね。 それから12行目のpos命令で配列変数に入っているx座標とy座標を取り出して、位置を決定していますからね。
配列変数のまとめ
配列変数は理解できましたか? ポイントとしては配列変数は「変数のかたまり」を用意するということ。そして番号がついているので、繰り返し処理の cnt などと組み合わせると、大量の変数を簡単に扱うことができます。 それから2次元配列というのも勉強しました。ここでは使いませんでしたが、3次元配列とか4次元配列もできます。3次元配列はルービックキューブのような縦、横、高さがあるような場合のイメージとして使うと便利です。3Dゲームがまさにコレなんですけどね。4次元配列までやると頭がバグってしまいそうなので考えないようにしてます。。。ではまた!