やはりBASICで一番楽しいプログラミングは、グラフィック描画で遊ぶ事でしょう。最初は乱数を使って無茶苦茶に直線等を作図したり、するだけでも楽しかったものでした。
画面設定や画面消去については「PC-9801画面構成とお約束」である程度は既に記述していますので、実際の作図命令について記述していきます。各座標値は、ノーマルモード640×400時、以下のようになります。
(0,0) (639,0)
(0,399) (639,399) |
◆CLS
グラフィック画面のクリアは
で行います。
◆LINE
直線を作図します。
LINE (X1,Y1)-(X2,Y2) | 始点(X1,Y1)から終点(X2,Y2)へ直線を作図します。色はフォアグラウンドカラーです |
LINE (X1,Y1)-(X2,Y2),C | 色指定をして直線を作図します |
LINE (X1,Y1)-(X2,Y2),7,,&HAAAA | ラインスタイル(&HAAAA)を指定して作図します |
LINE -(X2,Y2) | 先程作図した最終点から(X2,Y2)まで直線を作図します |
LINE (X1,Y1)-STEP(DX,DY) | (X1,Y1)〜(X1+DX,Y1+DY)へ直線を作図します |
LINE -STEP(DX,DY) | 先程作図した最終点から(+DX,+DY)の位置まで直線を作図します |
また、長方形を作図する事も出来ます。
LINE (X1,Y1)-(X2,Y2),5,B | (X1,Y1)〜(X2,Y2)を対角線とする長方形を作図します。 |
LINE (X1,Y1)-(X2,Y2),5,BF | 長方形の内部を塗り潰します |
LINE (X1,Y1)-(X2,Y2),7,B,&HAAAA | ラインスタイル(&HAAAA)を指定して長方形を作図します |
LINE (X1,Y1)-(X2,Y2),5,BF,7 | 輪郭線は色5で、塗り潰しは色7で、長方形を作図します |
LINE (X1,Y1)-(X2,Y2),5,BF,T$ | 輪郭線は色5で、塗り潰しはT$で与えるタイルストリングで、長方形を作図します |
ラインスタイルは&H0000〜&HFFFFの範囲で指定します。
----- -- -- ---- | → | 1111101101101111 | → | FB6F |
タイルストリングは文字列で与えるパターンで、横8ドット×縦Nドットが可能です。8色モードの場合は縦1ドットにつき、青プレーン→赤プレーン→緑プレーンの順に指定します。16色モードの場合は更に濃淡プレーンの分が必要です。
例えば、8色・8ドット×2ドットの場合、
●○●○●○●○
○●●●○●●● | → |
青:10101010
赤:10001000
緑:00000000 | → |
AA
88
00
77
22
00 |
青:01110111
赤:00100010
緑:00000000 |
でタイルストリングは、T$=CHR$(&HAA)+CHR$(&H88)+CHR$(&H00)+CHR$(&H77)+CHR$(&H22)+CHR$(&H00)という具合で指定します。込み入った図形等になるとメモリオーバーのエラーを発生する場合があります。
◆PSET
点を作図します。
PSET (X,Y) | (X,Y)に点を作図します。色はフォアグラウンドカラーです |
PSET (X,Y),C | 色指定をして点を作図します |
PSET STEP(X,Y) | 作図最終点から+X,+Yの位置に点を作図します |
◆POINT
作図最終点を変更します。作図は行いません。
POINT (X,Y) | 作図最終点を(X,Y)にします |
POINT STEP(DX,DY) | 作図最終点を+DX,+DYの分だけずらします |
また、作図最終点の座標を取得する場合には以下のようにします。
WX=POINT(0) | 作図最終点のワールド座標系X座標を取得 |
WX=POINT(1) | 作図最終点のワールド座標系Y座標を取得 |
SX=POINT(2) | 作図最終点のスクリーン座標系X座標を取得 |
SX=POINT(3) | 作図最終点のスクリーン座標系Y座標を取得 |
(ワールド座標系は、WINDOW命令を利用する場合に使います)
更に、スクリーン座標系の指定したドットの色を取得する事が出来ます。
C=POINT(X,Y) | 座標(X,Y)の描画色を変数Cに入れます |
◆PRESET
点を消去します。
PRESET (X,Y) | (X,Y)をバックグラウンドカラーで点を作図します |
PRESET (X,Y),C | 色指定をして点を作図します(PSETと同じ) |
PRESET STEP(X,Y) | 作図最終点から+X,+Yの位置に点を作図します |
◆CIRCLE
円、円弧、楕円、楕円弧を作図します。
CIRCLE (X,Y),R | 中心点(X,Y)、半径Rで、円を作図します。色はフォアグラウンドカラーです |
CIRCLE (X,Y),R,C | 色指定をして円を作図します |
CIRCLE STEP(X,Y),R | 作図最終点から+X,+Yの位置を中心点として円を作図します |
CIRCLE (X,Y),R,5,,,,F | 円の内部を塗り潰します |
CIRCLE (X,Y),R,5,,,,F,7 | 輪郭線を5、塗り潰し色を7で円を作図します |
CIRCLE (X,Y),R,5,,,,F,T$ | 円の内部をタイルストリングT$で塗り潰します |
CIRCLE (X,Y),R,C,A1,A2 | 開始角度A1、終了角度A2、で円弧を作図します。角度値はラジアン値です |
CIRCLE (X,Y),R,C,,,0.5 | 比率0.5の楕円を作図します。比率は(垂直方向の半径)÷(水平方向の半径)で指定します |
CIRCLE (X,Y),R,C,A1,A2,0.5 | 開始角度A1、終了角度A2、比率0.5で楕円弧を作図します |
◆PAINT
指定色で囲まれた領域を塗り潰します。
PAINT (X,Y) | 通過点(X,Y)を含む、境界線色で囲まれた領域内をフォアグラウンドカラーで塗り潰します |
PAINT (X,Y),C | 通過点(X,Y)を含む、境界線色Cで囲まれた領域内を領域色Cで塗り潰します |
PAINT (X,Y),C,D | 通過点(X,Y)を含む、境界線色Dで囲まれた領域内を領域色Cで塗り潰します |
PAINT STEP(X,Y),C,D | 作図最終点から+X,+Yの位置を通過点とする、境界線色Dで囲まれた領域内を領域色Cで塗り潰します |
PAINT (X,Y),T$,D | 通過点(X,Y)を含む、境界線色Dで囲まれた領域内をタイルストリングT$で塗り潰します |
文字を塗り潰した長方形と組み合わせて表示したい場合、「PC-9801画面構成とお約束」で記述したPX,PYを使って以下のように記述すると、ノーマルモードでもハイレゾモードでも同じように画面描画させる事が出来ます。
10 ' SAVE "ファイル名.BAS"
20 ' プログラムのタイトル等
30 '
40 IF VIEW(2)=639 THEN SCREEN 3,0,0,1:PX=1:PY=1 ELSE SCREEN 0,0,0,1:PX=1.75:PY=1.875
50 WIDTH 80,25:CONSOLE 0,25,0,1,0:COLOR ,,,,2:CLS 3
・・・・・
1000 LOCATE 10,15:PRINT "あいうえお"
1010 LINE(10*8*PX,15*16*PY)-STEP(10*8*PX,16*PY),4,BF |
半角文字は、ノーマルモード時、横8ドット×縦16ドットで表現されます。全角文字は、横16ドット×縦16ドットになります。これは、横640ドット÷80文字=8で分かる通り。それではハイレゾモードの場合には、横1120ドット÷80文字=14、縦750÷25=30、となります。ですのでノーマルモード時を基準にして、ハイレゾモードの場合には、14/8=1.75、30/16=1.875、の比率を掛ければノーマル・ハイレゾの両用プログラムが簡単に書ける、という訳です。 |