B-Magaスマートフォン専用ページを表示B-Maga初心者向けのプログラミングについての情報や、フリーゲームの情報など、お知らせしていくブログです。プログラムの投稿の受付や、そのプログラムの公開などもやる予定です。>>2017年09月15日HSPでプログラミング!~第5回・dim命令、rnd関数、redraw命令を使おう!さてさて、このHSPでプログラミングも、いよいよ最終回です。今回は、ゲームプログラミングに役立つ、dim命令、rnd命令、redraw命令について説明していきます。複数のキャラクターを動かすことを考えてみましょう。それらのキャラクターの位置を変数に入れていくとしたらどうしますか?X1、X2、X3というように変数を別々に作るのも一つの手ですが、たくさんのキャラクターがある場合には大変ですよね。そこで出てくるのが、配列変数とそれを定義するdim命令です。配列変数について説明しましょう。通常、変数には1つの数しか入れることはできません。数が入っている変数に、別の数を入れると、その数に内容が上書きされます。対して、配列変数は、その中にいくつかの部屋が用意されていて、それぞれの部屋に別々の数を入れることができるのです。それぞれの部屋は、添え字という数値によって識別されます。配列変数をマンションとするなら、添え字は部屋番号と考えるといいですね。dim命令は次のように使います。5この命令を実行すると、名前が指定された[配列変数名]で、[要素数]部屋の部屋を持つ配列変数が作られます。このとき注意するのは、添え字は0から始まるということです。上の例でいえば、0番から4番までの5つの部屋が作られるわけです。1番から5番までではないので気を付けてください。して作った配列変数は、次のように指定します。配列変数名(添え字)例えば、配列変数enxの3番の場合は、次のように指定します。enx(3)さて、この配列変数が便利なところは何かというと......。添え字には変数が使えるということです!添え字には変数が使えるということです!大事なことなので、二回言いました。次は配列変数tensuの合計を計算して表示するプログラムです。sumstopこのプログラムでは、変数iの値を0から4まで変化させることで、tensu(0)からtensu(4)の値を、変数sumに順番に加算しています。このように、繰り返しの命令と組み合わせることによって、複数の値を簡単に処理できるのが、配列変数の強みです。これを応用すれば、キャラクターの座標を配列変数でもっておき、repeat~loopなどで繰り返して、複数のキャラクターを短いプログラムで動かすことも可能なわけです。~乱数を作る、rnd関数さて、次はrnd関数です。rnd関数とは、乱数......でたらめな数を作ってくれる関数です。rnd(上限の数)例:rnd(7)これを実行すると、0~(上限の数-1)までのでたらめな数が作られます。試しに、次のプログラムを実行してみてください。ransuloopstopどうですか?数が5つ表示されましたね。ウインドウを閉じて、もう一度実行してみてください。あれ?さっきと同じ数が表示されてますね。何もしないと、rnd関数はただ同じ順番で数を作るのです。テストには役に立つかもしれませんが、実際にゲームを作るときには困りますよね。そこで出てくるのが、randomize命令です。5の前に、randomizeを入れて実行してみてください。今度は、実行するたびに違う数字が出てきましたね。rnd関数を使うときは、このようにrandomize命令を組み合わせるのが定番です。~チラツキを防ぐ、redraw命令まずは、次のプログラムを入力して、実行してみてください。なんか画面がちらついていませんか?これはいちいち、実際の画面を白で塗りつぶして、三角を書いている処理をしているからです。これを防ぐために、表示されない仮の画面に先に書いておいて、それを実際の画面に反映させる手法をとることがあります。これを、ダブルバッファリングと言います。そのダブルバッファリングに使われるのが、redraw命令なのです。1を入れて実行してみてください。つきがなくなりましたね。1を実行すると、その仮の画面の内容を、実際の画面に反映するのです。このredrawを使うことで、画面のチラツキを防ぐことができます。~最後にいかがでしょうか?ここまで説明した内容を使えば、きっとあなたでもHSPでゲームが作れるでしょう。|Seesaaブログ。