Win32プログラミング講座 〜 Step12. N88BASICスタイルで行こう!(一休み?) 〜


前回までのページをちゃんと読んでくれた皆さん、少しお疲れのようですので、今回は幼少に戻った気分で、N88BASIC遊びをしてみます。

このページでは、技術的なことは忘れて、「あの頃」のプログラムをふんだんに使って懐かしむことにしましょう。思い出がない方も「元祖N88BASICはこんなもんだったんだ〜」と頭の隅にでも入れておきましょう(私もその一人なのですが…)。このページに関しては、最新技術を無視し、時代に逆らった内容だということをお断りし、内容に入っていきます。

ということで、ここからは以下に示す2つの条件を除き、N88BASIC互換以外の命令語、関数は使いません!(命令語の詳細情報は、ヘルプファイルをご覧下さい)

条件1
ご存知の通り、ActiveBasicはWindowsプログラミング用に開発されているので、そのままではDOSみたいな画面は出てきませんし、Print命令やInput命令も使えません。N88BASICスタイルでプログラミングをしたい場合は、そのソース プログラムの先頭行に

#N88BASIC
または
#prompt
または
#include <basic\prompt.sbp>

のいずれかを入れておいて下さい。3者とも、意味は全く同じです。3番目の書き方が「prompt.sbpを読み込みます」という明確な意味をそのまま示しますが、これらは皆さんの好みで選んでもらって構いません。
N88BASICに愛着がある方は、プログラムの先頭部に「#N88BASIC」などという記述があっても、抵抗が少なくてすみますね☆

条件2
暗黙の宣言好きな方には非常に申し訳ないのですが(その前にそんな人いるのか?)、変数は必ずDim命令語で宣言しなければなりません。また、ActiveBasicでは、命令語を除き、識別子(変数、定数、関数などの名前)のアルファベットの大文字、小文字を区別する仕様になっています。なので、N88BASIC時代のように、大文字、小文字をごちゃまぜにすることはできませんので、ご注意下さい。



手始めに、ちょっとオシャレに "Hello World!" を演出してみましょう。


#N88BASIC
100 DIM I,J
110 DIM GAP,WAITTIME
120 LOCATE 19,12:PRINT "HELLO WORLD!"
130 GAP=5
140 WAITTIME=1000000
150 FOR I=0 TO 7
160     CIRCLE (200,200),100,I
170     FOR J=0 TO WAITTIME:NEXT
180     CIRCLE (200-GAP,200),100,I
190     FOR J=0 TO WAITTIME:NEXT
200     CIRCLE (200-GAP,200-GAP),100,I
210     FOR J=0 TO WAITTIME:NEXT
220     CIRCLE (200,200-GAP),100,I
230     FOR J=0 TO WAITTIME:NEXT
240 NEXT

※このプログラムでは関数を利用しないので、
大文字記述で雰囲気をだしてみました。



Windowsプログラミングに慣れてしまうと、Sleep関数を使いたくなりますが、あえてForループの負荷を利用したウェイト処理を採用してみました。1GHzあたりのCPUにあわせた速度なので、WAIT変数の値をご自身の環境に合わせ、変更しておくと良いでしょう。

それにしても、"FOR T=0 TO 1000000:NEXT" はタイムマシンの変わりになるプログラムですね。



次は、INPUT命令語を交えた数当てゲームなんてのを作っちゃいます

このプログラムのウリは、ランダムな答えがでてくるところなんですよね、覚えてます!?
Randomize命令語で擬似乱数の初期化を行い、Rnd関数に乱数の範囲(ここでは1〜10)を掛け合わせて答えを算出しています。

#N88BASIC
10 DIM ANS,N
20 RANDOMIZE
30 ANS=Int(Rnd()*10+1)
40 INPUT "1以上、10以下の数値を入力して下さい->",N
50 IF ANS>N THEN PRINT "もっと大きいよ":GOTO 40
60 IF ANS<N THEN PRINT "もっと小さいよ":GOTO 40
70 PRINT "当たり!"




リサージュ アルゴリズム

#N88BASIC
10 DIM PI
20 DIM I,T
30 '
40 PI=3.141592653589793
50 '
60 FOR I=.1 TO 360 STEP .1
70     T=(PI/180)*I
80     PSET(Cos(3*T)*100+150,Sin(5*T)*100+150)
90 NEXT I




ローレンツ アルゴリズム

#N88BASIC
100 DIM A,B,C,D,K
110 DIM X,Y,Z
120 DIM DX,DY,DZ
130 CLS 3
140 A=10:B=28:C=8/3:D=0.01
150 X=1:Y=1:Z=1
160 FOR K=0 TO 2999 STEP .3
170     DX=A*(Y-X)
180     DY=X*(B-Z)-Y
190     DZ=X*Y-C*Z
200     X=X+D*DX:Y=Y+D*DY:Z=Z+D*DZ
210     IF K>100 THEN PSET(X*5+120,Z*5+10)
220 NEXT K





このページで紹介するように、Windowsアプリのほかにも、懐かしいコードをいくらでも書くことができます。

今後ともN88BASICとの互換性に関しては、Windowsアプリケーション開発とは全く別の路線として重視していきたいと考えています。

前へ戻る - 次へ進む
トップへ戻る


©2005 Discoversoft