1行に複数の命令を書くには : で繋げます、1命令ずつ左から右へと実行されます。
0から3までの数を表示してみる。
FOR X=0 TO 3 : ? X : NEXT
0
1
2
3
OK
FORは繰り返し命令で、変数 I に 0 を入れ、NEXTの前までの命令を実行した後、
変数 I に1つづ足して同じ処理を繰り返し行い、3まで処理したら終わります。
プログラム中にコメント(実行されない文字)を書くことができます。
REM このプログラムは7/3に作成
REM(リマーク)は '(シングルクォーテーション)で代用できます。
' 自分の長所を見つけるには、自分が楽にできることを探すこと
文字の色を指定するには COLOR 命令で 色番号 0から15の全16色が指定できます。
FOR C=0 TO 15
COLOR C '←文字色が0は透明、1は黒なので背景が黒いと見えない
? C, '←「,」(カンマ)はタブとして空白が空く
NEXT
文字が見えない時は ACLS と打てば、全ての表示を元通りに戻してくれる。
FOR Y=240 TO 0 STEP -16 'STEPはマイナス値を指定することもできる
GLINE 0,Y,399,Y,#BLUE '16ドット毎に横線を引く
WAIT 60
NEXT
FOR Y=0 TO 239 STEP 16
FOR X=0 TO 399 STEP 16 '←FOR文は重ねて使える、これをネストと呼ぶ
GBOX X,Y,X+14,Y+14,RGB(0,X,Y) 'グラフィック画面に四角を描く
WAIT '←WAITは待つ時間を省略できる、この場合1/60秒
NEXT
NEXT
FOR Y=0 TO 239 STEP 16
FOR X=0 TO 399 STEP 16
GFILL X+1,Y+1,X+13,Y+13,RGB(255-X,255-Y,0) '塗り潰しの四角を描く
WAIT '←WAITを入れているのは描くところを見せるため
NEXT
'↑ループの内側は、インデント(字下げ)と言ってスペースを空けるとプログラムが見やすくなる
NEXT
グラフィック画面に描画命令は他にも、円(GCIRCLE)、塗り潰し三角形(GTRI)、点(GPSET)などがある、説明を見ながら使ってみるといい。
プログラムは、その時の何かの条件の違いにより別の動作をさせることができる、これを条件分岐という。
IF文 THEN文を使うと条件分岐できる。
INPUT "すうじをいれてね ",NUM
IF NUM==0 THEN COLOR 3 '←変数 NUM が 0 だった場合、文字色を赤に切り替える
? "すうじは";NUM;"です。"
条件に合わなかった処理を一緒に記述できる。
これにはIF THEN文より後に ELSE文を書き、そこに条件に合わなかった処理を書く
INPUT "すうじをいれてね ",NUM
IF NUM==0 THEN COLOR 3 ELSE COLOR 5 '←変数 NUM が 0以外だった場合、文字色を緑に切り替える
? "すうじは";NUM;"です。"
IF THENの間に入る式を、条件式と言う、条件式は次の様に書くことができる。
①定数、変数、関数、式を比較演算子で繋ぐ
IF NUM==8 THEN '←NUMが8
IF NUM!=8 THEN '←NUMが8じゃない
IF NUM<8 THEN '←NUMが8よりも小さい
IF NUM>8 THEN '←NUMが8よりも大きい
IF NUM<=8 THEN '←NUMが8以下(8を含む)
IF NUM>=8 THEN '←NUMが8以上(8を含む)
IF (R*R*PI())>100 THEN '円の面積を計算、100を超えていたら
実は、条件式は真偽値を判定しているだけです、真偽値の真とは 0以外 のこと、偽とは 0 のこと
②定数、変数、関数、式を1つ書く
IF 1 THEN '←1が0以外なら
IF 0 THEN '←0が0以外なら(ありえない)
IF TRUE THEN '←TRUEが0以外なら
IF FALSE THEN '←FALSEが0以外なら(ありえない)
IF NUM THEN '←NUMが0以外なら
IF NUM-8 THEN '←NUM-8が0以外なら
(TRUE、FALSEはシステム変数であり、最初から値が入っている)
IF THEN ELSEを1行で書くのは狭いし見づらい、そこで複数行で書くことができる。
IF (条件式①) THEN '←THENの右には処理を書いてはいけない
(①真の処理)
ELSEIF (条件式②) THEN '←ELSEIFを使えば次の条件分岐が連続でできる
(②真の処理)
ELSE
(偽の処理)
ENDIF '←最後に必ずENDIFを付けること
INPUT "1:don't go 2:can't go",N1
INPUT "1:京都弁 2:大阪弁",N2
IF N1==1 THEN
IF N2==1 THEN
PRINT"「行かへん」(don't go)"
ELSE
PRINT"「行けへん」(don't go)"
ENDIF
ELSE
IF N2==1 THEN
PRINT"「行けへん」(can't go)"
ELSE
PRINT"「行かれへん」(can't go)"
ENDIF
ENDIF
REPEAT
VSYNC '←処理が速過ぎるので1/60秒の表示更新まで待つ
B = BUTTON() '←ユーザーの押したボタン情報を変数Bに取得
IF B==0 THEN CONTINUE '←何も押されて無ければループ評価に戻る
IF B==#UP THEN ?"↑" '←上が押されたら「↑」を表示
IF B==#DOWN THEN ?"↓" '←下が押されたら「↓」を表示
IF B==#LEFT THEN ?"←" '←左が押されたら「←」を表示
IF B==#RIGHT THEN ?"→" '←右が押されたら「→」を表示
UNTIL B==#A '(A)ボタンが押されたらループを抜ける
自作命令・関数内で独自に変数を使った場合、偶然呼び出し元で使っている変数と名前が被ってしまいバグになることがある。
例えばこんな場合だ。
X=10:Y=5 '←呼び出し元では変数X,Yを使っている
ICHIGO_GO '←自作命令を呼ぶ
LOCATE X,Y:? "できるかな?"
DEF ICHIGO_GO '←自作命令
SPSET 0,0 '←スプライト0番に苺を設定・表示
FOR Y=0 TO 240 STEP 16 '←変数Yを使った
FOR X=0 TO 400 '←変数Xを使った
SPOFS 0,X,Y '←苺のスプライトの表示位置を変更する
NEXT
NEXT
END