N88-BASICでクマ

 

nl20603.zip(kuma1.bas)とNL-BASICは、

下記リンクよりダウンロードできます。

NL-BASIC(N88-BASIC互換?)ホームページへのリンク

Readme.txtを読んで、遊んで見て下さい。

 

下記リストをマウスで選択しCtrl+cでコピーし、

NL-BASICの画面でAlt+v(Ctrl+vではないので注意)

でプログラムを読込めます。

 

kuma1.bas

 

100 '----------------------------------------------------------------------

110 ' くま by ULproject for N88-BASIC

120 '----------------------------------------------------------------------

130 DEF FNR(X) = X * PI / 180  '--- 度をラジアンへ

140 PI = ATN(1) * 4            '--- π(arctan(1) = π/4)

150 B$ = CHR$(0)+CHR$(&H55)+CHR$(0)+CHR$(0)+CHR$(&HAA)+CHR$(0) '--- 黒赤

160 CLS 3                      '--- 画面消去(1:文字 2:CG 3:両方)

170 X = 320                    '--- 顔の中心位置x

180 Y = 200                    '--- 顔の中心位置y

190 CIRCLE(X-60, Y-60), 40, 0,         ,         ,    , F, B$  '--- 左耳

200 CIRCLE(X+60, Y-60), 40, 0,         ,         ,    , F, B$  '--- 右耳

210 CIRCLE(X-60, Y-60), 20, 7,         ,         ,    , F      '--- 左耳中

220 CIRCLE(X+60, Y-60), 20, 7,         ,         ,    , F      '--- 右耳中

230 CIRCLE(X   , Y   ), 80, 0,         ,         ,    , F, B$  '--- 顔

240 CIRCLE(X   , Y+20), 45, 7,         ,         ,    , F      '--- 顔中

250 CIRCLE(X-30, Y-20), 15, 0,         ,         , 1.2, F      '--- 左目

260 CIRCLE(X+30, Y-20), 15, 0,         ,         , 1.2, F      '--- 右目

270 CIRCLE(X-30, Y-20),  5, 7,         ,         , 1.5, F      '--- 左目中

280 CIRCLE(X+29, Y-20),  5, 7,         ,         , 1.5, F      '--- 右目中

290 CIRCLE(X-25, Y-16),  2, 7,         ,         , 1.5, F      '--- 左目小

300 CIRCLE(X+34, Y-16),  2, 7,         ,         , 1.5, F      '--- 右目小

310 CIRCLE(X   , Y+ 5), 10, 0,         ,         ,    , F      '--- はな

320 CIRCLE(X   , Y+20), 25, 0, FNR(210), FNR(329)              '--- くち

330 LINE(X-21, Y+32)-(X-22, Y+35), 0                           '--- くち左

340 LINE(X+21, Y+32)-(X+22, Y+35), 0                           '--- くち右

 

 

NL-BASIC,VL-BASICについての注意点とお知らせ

扇形の塗潰しは、はみ出しや塗残しなどの不具合が

でる可能性があります。

その時はPAINTなどで代用して下さい。

塗潰しの円や扇を描く過程を見る見ないを、

Alt+'-' , Alt+'^' で切替えることができます。

(NLBasic01.txt,VLBasic01.txtでも可能です。)

 

ここから、解説です。

N88-BASICのグラフィック座標は

(0,  0) … (639,  0)

(0,399) … (639,399)

のように左上が原点になっています。

(右下はSCREENモードにより変わります)

色は0:黒 1:青 2:赤 3:紫 4:緑 5:水色 6:黄 7:白

です。

 

N88-BASICのCIRCLE命令について説明します。

CIRCLE(320, 200), 50, 7

で半径50の白い円が画面中央に描かれます。

 

CIRCLE(x, y), r, c, a1, a2, e, F, b/t$

(x, y) … 円の中心座標

r      … 円の半径

c      … 円弧の色

a1, a2 … 円弧の開始,終了角(0~2π)(負の時半径描画)

e      … 楕円の縦の半径に対する横の半径の割合

          半径rの円を縦,横に潰した形になる。

          e = 0.5 → 横r , 縦0.5r で横長

          e = 2.0 → 横r/2  , 縦r で縦長

F      … Fを指定すると円内部をc色で塗潰す

b/t$   … bを指定するとcの代わりにb色で塗潰す

          bの代わりにt$を指定するとタイルパターン

          で塗潰す

 

8色モードのタイルパターンの説明

150 B$ = CHR$(0)+CHR$(&H55)+CHR$(0)+CHR$(0)+CHR$(&HAA)+CHR$(0) '--- 黒赤

    16進  2進

Blue  00  00000000 1の位(この位が1なら1)

Red   55  01010101 2の位(この位が1なら2)

Green 00  00000000 4の位(この位が1なら4)

          02020202 … 合計

Blue  00  00000000 1の位(この位が1なら1)

Red   AA  10101010 2の位(この位が1なら2)

Green 00  00000000 4の位(この位が1なら4)

          20202020 … 合計

よって、B$は、

黒赤黒赤黒赤...

赤黒赤黒赤黒...

...

というタイルパターンで塗潰します。

 

N88-BASICの関数の定義

BASICでは1つの数式を関数として定義できます。

(IFなどの命令文を書くことはできません)

DEF FN関数名(x, y, ...) = ...

です。

 

130 DEF FNR(X) = X * PI / 180  '--- 度をラジアンへ

 

を実行しておくと、

FNR(90)は90 * PI / 180という計算が行われます。

 

CIRCLEの角度はラジアン単位なので、

この関数を使えば度(0~360)で指定できます。

 

140 PI = ATN(1) * 4            '--- π(arctan(1) = π/4)

は、円周率の代入です。

PI = 3.141592653589793

としてもかまいません。

Tan-1(1) = π/4なので4倍しています。

 

CLS nは画面消去です。

nが1または省略 → テキスト画面の消去

nが2           → グラフィック画面の消去

nが3           → 上記両画面の消去

 

N88-BASICのLINE

LINE(x1, y1)-(x2, y2), c

座標(x1, y1)から(x2, y2)にc色の線を引く

 

その他、箱や塗り潰し、破線など、

詳しくはNL-BASICなどのマニュアルを見て下さい。