簡易ペイント処理を作成する。 ただし、大きな領域の場合、(BASICの)システムのスタックがオーバーフローする可能性があります。
SUB fill(x,y,c) !塗りつぶし SET POINT STYLE 1 !ドットの形 SET POINT COLOR c !塗りつぶす色 ASK PIXEL VALUE (x,y) ac !領域の色 PLOT POINTS: x,y !塗りつぶす ASK PIXEL VALUE (worldx(pixelx(x)+1),y) tc !右 IF tc=ac THEN CALL fill(worldx(pixelx(x)+1),y,c) ASK PIXEL VALUE (worldx(pixelx(x)-1),y) tc !左 IF tc=ac THEN CALL fill(worldx(pixelx(x)-1),y,c) ASK PIXEL VALUE (x,worldy(pixely(y)+1)) tc !上 IF tc=ac THEN CALL fill(x,worldy(pixely(y)+1),c) ASK PIXEL VALUE (x,worldy(pixely(y)-1)) tc !下 IF tc=ac THEN CALL fill(x,worldy(pixely(y)-1),c) END SUB
塗りつぶしの部分は、
IF VAL(m$(i:i))=1 THEN CALL fill(x,y,4) !塗りつぶし
とする。
|