0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

レトロPCのためのBASIC講座9 グラフィック命令とFOR、GOSUB

Posted at

前回のおさらい

前回は、PC-8801の画面要素の1つでテキストスクリーンに関するプログラム例を上げました。

レトロPCのためのBASIC講座8

グラフィック命令

今回はグラフィック命令です。
PC-8801のグラフィック画面はカラー画面で640×200ドットの画面で色が8色使えます。
最もかんたんなコマンドがPSET命令で点を打ちます。
PSET (X座標,Y座標),色
色は、0−7までの数値で1が青、2が赤、4が緑を表しており2のn乗値の合成で
0は黒、青と赤で3がシアン、青と緑で5がスカイブルー、赤と緑で6が黄色、青・赤・緑が7で白を意味します。

LINE命令は
LINE (始点X座標、始点Y座標) - (終点X座標、終点Y座標),色
という命令で選が引けます。

#サンプルプログラム

ZIZYOU.BAS

100 CLS 3:PCOL=2
110 LINE (0,100)-(639,100),5
120 LINE (320,0)-(320,199),6
130 MINX=-1!:MAXX=1!
140 MINXD=0:MAXXD=639
150 MINY=-1!:MAXY=1!
160 MINYD=199:MAXYD=0
170 FOR P=MINXD TO MAXXD STEP 8
180   X = MINX + P*(MAXX-MINX)/(MAXXD-MINXD)
190   PX = ((MAXXD-MINXD)*X + (MAXXD-MINXD))/(MAXX-MINX)
200   Y = MINY + (X*X)/(MAXY-MINY)
210   PY = (MAXYD-MINYD)*Y/(MAXY-MINY)
220   GOSUB 250
230 NEXT P
240 END
250 PSET (PX-1,PY),PCOL
260 PSET (PX,PY-1),PCOL
270 PSET (PX+1,PY),PCOL
280 PSET (PX,PY+1),PCOL
290 RETURN

解説を入れると
100行目から160行目で画面の初期化と定数値を変数に設定して
170から230目はループ命令のFORでMINXDからMAXXDまでの数値を8づつ増やしながらPに渡しています
その値から二乗値をYとしたグラフを書くための座標計算をしてGOSUB 250で実際にグラフを書くサブルーチンを呼び出しています。
250から290行目はサブルーチンの内容で4つの点を打ってグラフを描画しています。

このように、サブルーチン化することでループ全体を見通しやすくしています。

今回の動画

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?