BASIC プログラミング入門 Version0.7β By 7N4EAH/εαθ ~~~~~~~~~~~~~~~~~~~~~~~~ 注意1:最近BASICをやっていないので、間違いがある可能性があります 注意2:これには基本的な事しか書いていません。詳しくはBASICの本を見てください。 @BASICとは BASICとは、その名の通り簡単にプログラムを作成でき、実行することができるプログラミング言語です。(ちなみにBASICというのは何かの略だそうだ) BASICとしてはN88-BASIC,N88-BASIC(86),QuickBasic,Q-Basic,VisualBasicなどがあります。これらは、VisualBasicをのぞき、ほとんどの命令が共通です。 ABASICの文法 (A)行の構造 BASICでは 行番号 命令 パラメータ と書きます。(行番号は書かない場合もある) パラメータとはその命令が実行のための材料と考えればいいでしょう(厳密には違うが)例:10 print "test" (B)変数・関数 変数とは値を格納できる箱(のようなもの)です。1次関数などにでてくる変数とだいたい同じです。 名前はアルファベット、数字、ピリオドで自由に決められます。 文字も数字で表すことができるため、変数は文字も格納できます。 ただし、文字を格納する際は変数名の最後に$を入れます。 関数とは実行されたとき、イベント(文字を入力するなど)があった場合関数自身が変数となり、値が代入されるものです。 (C)分岐 分岐はプログラムを作る際によく出てきます。 if [条件] then [条件を満たしているときの処理] 例:if a=0 then 〜  'aという変数が0のとき〜という処理をする 上の構文の条件を満たせなかった場合の処理には else [条件を満たせなかったときの処理] elseif [ifの時とは違う条件] then [条件を満たしているときの処理] と書くことができます。 例:else … 'aという変数が0でないとき…という処理をする   elseif a=1 then ‥ ’aという変数が1のとき、‥という処理をする (D)繰り返し ある一定の命令を必要な文だけ繰り返したい場合は for [変数] = [始める数] to 「終わる数] step [一回のループごとに加える数] ……… ’繰り返す処理 next [上と同じ変数] と書きます。 これは、まず変数に始める数が代入され、繰り返したい処理を実行し、 nextの文までくるとstepの後にかかれた数が変数にプラスされ、繰り返したい処理が実行される、 という感じのことが繰り返されます。 例:for i=0 to 1000 step 2 ’iという変数に0が代入され   ………         ’ここの命令が実行され、   next i         ’iに2を足して上の命令が実行される。   上の例だとiが1000になったら、ループが終了するという風になります (E)ジャンプ 指定した行にジャンプしたい場合は goto [行番号] と書きます 例:goto 10  ’10行にジャンプする (F)記号 a+b    aとbの和 a-b    aとbの差 a*b    aとbの積 a/b    aとbの商 a^b    aのb乗 a>b    aがbより大きい a=b,a=>b aがb以上 a<=b,a=b,a>7 then goto :color 7,0,0,a 40 input "X座標を入力してください";x 50 input "Y座標を入力してください";y 60 input "半径を入力してください";r 70 input "開始角を入力してください";stath 80 input "終了角を入力してください";endth 90 input "偏平率を入力してください";h 100 circle x,y,r,,stath,endth,h LIST3:上級編 10 SCREEN 3,0:COLOR ,,,,2:CLS 3 20 FOR I=1 TO 15 30 COLOR =(I,&HFFF) 40 NEXT I 50 FOR I=1 TO 15 60 LINE (0,1*20)-STEP(639,10),1,BF 70 NEXT I 80 FOR I=1 TO 15 90 FOR J=1 TO 15 100 COLOR=(J,16*I^2) 110 GOSUB *WAITSUB 120 NEXT J 130 NEXT I 140 COLOR 150 END 160 *WAITSUB 170 FOR K=0 TO 100 180 NEXT K 190 RETURN LIST4:超上級編(マイコンBASICマガジン2000年5月号掲載) 10 'Circle Game 20 '時間内に打ち込めない可能性あり。やめておいた方がいいです。 30 'それでもやりたいならどうぞご自由に。 40 'とめませんけどね・・・ 50 CLEAR:RANDOMIZE VAL(RIGHT$(TIME$,2)+LEFT$(TIME$,2)) 60 SCREEN 3,2,0,1:COLOR 7,,,15,2:CONSOLE 0,25,0,1,1:WIDTH 80,25 70 DIM BX(4),BY(4),BZ(4),BMX(4),BMY(4):DD=30 80 FOR I=0 TO 15 COLOR=(I,273*I):NEXT 90 CLS 3:LOCATE 33,10:PRINT "3D CIRCLE GAME" 100 LOCATE 31,24:PRINT "(C)2000 MINDELIGHT"; 110 WHILE INKEY$="":WEND:T$=TIME$:WHILE T$=TIME$:WEND:FPS=17:FL=FPS 120 CY=-700:CMX=0:CMY=0:TS=0:TM=0:SC=0:ZZ=5:RS=50:TM=0:TS=0:CP=0:CK=4 130 FOR I=0 TO CK:BX(I)=INT(RND*960-480):BY(I)=-700:BZ(I)=450-I*50 140 BMX(I)=30-RND*60:BMY(I)=0:BMZ(I)=3+RND*5:NEXT:CLS:SCREEN ,0 150 LOCATE 28,24:PRINT STRING$(50,CHR$(135)); 160 SC=-(SC=0):SCREEN ,,SC,33-SC*32:CLS 2:I0=INP(232):I1=INP(234) 170 CMX=CMX+((CMX>0)-(CMX<0))*20/FPS:CMX=CMX-((I1 AND 4)-(I0 AND 4))*60/FPS 180 IF JP=0 THEN IF I0 AND 2 THEN 200 ELSE CMY=210:JP=1 190 CMY=CMY-300/FPS:CY=CY+CMY*20/FPS:IF CY<-700 THEN CMY=0:CY=-700:JP=0 200 CX=CX+CMX*20/FPS:IF CX<-800 OR CX>800 THEN CX=CX-CMX*20/FPS:CMX=0 210 FOR X=-960 TO 960 STEP 480:FOR Y=-900 TO 900 STEP 1800 220 SX=(X+CX)*DD:SY=(Y*CY)*DD 230 LINE (SX/DD+320,SY/DD+200)-(SX/(500+DD)+320,SY/(500+DD)+200),15:NEXT:NEXT 240 FOR B=0 TO CK:BMY(B)=BMY(B)+700/FPS 245 BZ(B)=BZ(B)-BMZ(B)*20/FPS:BX(B)=BX(B)+BMX(B)*20/FPS 250 BY(B)=BY(B)+BMY(B)*20/FPS:IF BZ(B)<1 THEN ZZ=B 260 IF BX(B)<-900 OR BX(B)>900 THEN BMX(B)=-BMX(B):BX(B)=BX(B)+BMS(B)*20/FPS 270 IF BY(B)>680 THEN BMY(B)=-BMY(B):BY(B)=BY(B)+BMY(B)*20/FPS 280 SX=(CX+BX(B))*DD/(BZ(B)+DD)+320:SY=(CY+BY(B))*DD/(BZ(B)+DD)+200 290 CIRCLE (SX,SY),320*DD/(BZ(B)+DD),15:NEXT:IF ZZ=5 THEN 330 300 BZ(ZZ)=400:IF SQR((BX(ZZ)+CX)^2+(BY(ZZ)+CY)^2)>320 THEN ZZ=5:GOTO 330 310 RS=RS+14:IF RS>50 THEN RS=50 320 COLOR@(78,24)-(78-RS,24),7:CP=9,ZZ=5 330 FL=FL+1:IF T$<>TIME$ THEN 360 335 TS=TS+1/FPS:IF TS>60 THEN TM=TM+1:TS=TS-60:CK=CK+(CK>0) 340 LOCATE 10,24:PRINT USING "###:##.##";TM;TS 350 CP=CP-12/FPS:CP=-CP*(CP>0):COLOR (0,CP):GOTO 160 360 LOCATE 0,24:PRINT FPS;"fps. ";:FPS=FL:FL=0:T$=TIME$ 370 RS=RS-2:COLOR@(28,24)-(77-RS,24),1:IF RS>0 THEN 160 380 COLOR=(15,&HF0):LOCATE 36,10:PRINT "GAME OVER" 390 WHILE INKEY$<>"":WEND:WHILE INKEY$="":WEND 400 COLOR=(15,&HFFF):SCREEN ,2:GOTO 90 [End of the text] [At 12,May,2001 01:37AM]