OriosのActiveBasic講座(1-Ex1):「爆発を防げ」ゲームを作ろう!
今まで、このActiveBasic講座では「数字の出力」から始まり「SelectCaseブロック」までやってきました。
しかし、今までやってきて何か物足りないことがありませんか?
そうです。実際にActiveBasicでどのようなことができるのかを今まで全くやったことがないのです。
そこで今回はActiveBasic講座番外編として、実際にActiveBasicで簡単なゲームを作りたいと思います。
今回は息抜き程度にこの講座をごらん下さったらと思います。
これで少しでもプログラミングに興味を持っていただけたらと思います。
#console
Dim num As Integer
Dim i As Integer
Dim nobomb As Byte
*start
Randomize
nobomb=Int(Rnd()*2)
Locate 0,0
Print "+------------------+"
Print "|爆弾の爆発を防げ!|"
Print "+------------------+"
Print "【任務】"
Print "1か2のどちらかを入力し爆発を防げ。"
Input num
Print "●-----"
For i=6 To 3 Step -1
Sleep(1000)
Locate i,6
Print " "
Next
Sleep(2000)
SelectCase num
Case nobomb+1
Print "爆弾の爆発は止められた。おめでとう。"
Sleep(3000)
Case 2-nobomb
Locate 2,6
Print " "
For i=0 To 10000
Print "■";
Next
Goto *start
Case Else
Print "指示に従わないやつは処刑だ。"
Sleep(1000)
For i=0 To 100000
Print "■";
Next
EndSelect
End
|
今回のプログラムをコンパイルしたものが欲しい方はこちらからどうぞ。
どうでしたか?楽しめたでしょうか?
今回は第二章と第三章の架け橋ということで、未習事項もいくらかありますが、
これは番外編ということで深く取り上げるつもりはありません。
今回は簡単なソースの説明だけです。
1行目:このプログラムがコンソールモードであることを指定します。
2〜4行目:このプログラムで使用する変数の宣言
5行目:「ラベル」です。
これは「*」+「ラベル名」を書くことによりプログラム内に目印をつけます。詳しくは32行目で。
6行目:Randomize命令語。
乱数の初期化を行います。詳しくは7行目で。
7行目:nobumbに(爆発しないほうの数字-1)を代入します。
ここで使われているRnd()は「関数」と呼ばれるものです。
詳しくは第三章で学習しますが、ここでやっていることを簡単に説明すると、
この「Rnd()」の部分はプログラムを実行するごとに0〜1の範囲のなかで違う値になる変数のようなものです。
また「Int(Rnd()*2)」の部分も同じく関数で、「Rnd()*2」の値を小数点以下切り捨てした値になる変数のようなものです。
とにかく、nobombには「0」か「1」が代入されます。
8行目:カーソルを「0,0」に移動させます。
9〜13行目:文字を出力します。
14行目:ユーザーに「1」か「2」を入力してもらいます。
これは表示する文字列 を省略した例です。
15行目:爆弾と導火線を描画します。
16〜20行目:導火線を「-」が一つだけになるまで消すためのループ
17行目:導火線の「-」を1つ消してから次のを消すまでの間隔を1秒開ける。
18行目:消す導火線のところにカーソルを持っていきます。
19行目:消す導火線のところに" "(半角スペース)を出力します。
コンソールウィンドウの場合、重なったところは上書きされるので、結局「-」を一個消すことになります。
21行目:処理を2秒間止めることでユーザーを焦らします。
ちょうどMのMんたさんのように……。(^^;
22〜39行目:ユーザーの入力した数字に合わせた処理を行う。
23〜25行目:ユーザーが爆発しないほうの数字(nobomb+1)を入力したときの処理です。
24行目:爆発が防げたことを表示
25行目:24行目で表示したことが読めるように3秒間停止。
26〜32行目:ユーザーが爆発させるほうの数字(2-nobomb)を入力したときの処理です。
27行目:導火線の最後の「-」のところにカーソルを持っていきます。
28行目:導火線の最後の「-」を" "(半角スペース)で上書きすることで消します。
29〜31行目:爆発を表すために1万個の■を表示させます。
32行目:Goto命令語。
Gotoの後に書いたラベルのところに作業が飛びます。
この場合Gotoの後に「*start」と書いてあるので、
5行目の「*start」のところまで戻り、また6行目から実行されます。
33〜38行目:ユーザーが「1」「2」以外の数字を入力したときの処理です。
34行目:「処刑する」という旨のメッセージを表示させる。
35行目:34行目のメッセージが読めるようにプログラムを1秒間停止させる。
36〜38行目:処刑を表すために10万個の■を表示させます。
40行目:プログラムを終了させます。
行数を書いているで赤太字のところは未習事項です。またそれ以外のところはそれを学習したページへのリンクを張っています。
今回の番外編はどうだったでしょうか?
先にも申しましたとおり、第二章と第三章の架け橋ということで、未習事項もいくらか盛り込みましたが、
あまりそこは深く考えず、とにかく「ActiveBasicでこんなプログラムが作れるんだ」と思っていただけたら幸いです。
もしどうしても気になるところがあるときは掲示板で質問してください。
で、次回ですが、いよいよプログラミングの核をなすともいえる「プロシージャ」を学習します。お楽しみに。