第5回 これであなたもプログラマ「5.カメさん、可愛い!」
|
|
5−5 カメさん、可愛い!
さて、配列変数が出てきたところで、カメさんに戻りましょう。 まず、カメさんの X座標を格納する配列を用意します。 4匹もいればよいので、
Dim X(4) as Integer
とカメさん用の配列を宣言します。バラバラの動きですから、ここには乱数を使ってみましょう。
i=Rand()*4+1
X(i)=X(i)+1
とすれば、iは乱数で1〜4のいずれかになりますので、カメさんのどれかが1歩進むわけです。そうすると、1匹の時のサンプルの
For x=0 to 129
DrawBitmap 1005+Mod(x,2),x,80
Delay 0.05
Next
のFor Nextループが、X座標も兼ねていましたので、今回はこの方法は使わなくても良さそうです。カメさんはバラバラに進みますので、いつ右端(X=129)に到達するか、分かりませんね。そう言う場合は、For NextよりもDo Loopを使ったほうが適当です。 すると、
Dim X(4) as Integer
Dim i as Integer
Do
i=Rand()*4+1
X(i)=X(i)+1
DrawBitmap 1005+Mod(X(i),2),X(i),30*i
If X(i)=130 Then
Exit Do
End if
Loop
で、良いわけですね。でも、最初にカメさんが表示されていないのは寂しいので、
For i=1 to 4
DrawBitmap 1005,0,30*i
Next
を入れておけばカメさんが表示されているはずです。Delayは、様子を見て入れれば良いです。(サンプルを作っている時に間違えて、Delay 0.5 と入れてしまい、本当のカメさん並の速度になって困りました。) あと、Loopの後に、
MsgBox "KAME-" + str(i) + ",Win!"
と加えておくと、どのカメさんが一着かわかりますので、簡単なレースゲームになります。そして、ふたたび、STARTをタップすれば、再度カメさんがスタートしますが、前のレースのカメさんは画面上に残ったままです。 なので一度、消しておく必要があります。 通常、比較的簡単に画面を消去するコマンドがあるのですが、NS BasicのEraseWindowでは、タイトルやボタンの表示も消してしまいますので、今1つ使い勝手が良くありません。 しかし、画面がパソコンほど大きくないので、白色で塗りつぶすのが良いでしょう。
FillRectangle 0,30,159,110,0,nsbInverted
これで、複数のカメさんを歩かせて、MsgBoxを付けることでレースになりました。完成です。(結構、可愛いですね) For Nextと配列変数、これで、おおよそのコマンド類や仕組みが揃ったことになります。 今回のカメさんでもわかりますが、Hello,world!からは、かなりの進歩ではないでしょうか? これまでは、BASICの基礎的なコマンドを中心に説明してきましたが、次回からは、プログラム作りの方に話題を移していく予定です。 【完成したソース】
|
||
第5回 これであなたもプログラマ「5.カメさん、可愛い!」
|