既出かもしれませんが、boxfでcls互換の画面クリアをする場合、
「boxf : clrobj : pos 0,0 : color」
のようにclsに比べて記述が面倒だと感じてきたので、
cls+αβで気軽に記述できるようにするために
マクロを組んでみました。
初めて組んだマクロなので バグ報告、要望、感想等々ありましたら、
気軽にレスしてください。
以下、マクロの説明
clstype以下、マクロとサンプルスクリプト(わかりづらいかもしれません。)
指定タイプの画面クリアを実行 clstype p1,p2,p3,p4,p5 p1,p2,p3=0〜255(255) : 色コード(R,G,Bの輝度) p4=0〜2(0) : 画面クリアモード p5=0〜1(1) : カレントポジションの初期化 p4の画面クリアする画面クリアモードは、以下から選ぶことができます。 0(boxf : clrobj) :ウィンドウ内の情報とオブジェクトをすべてクリアします。 1(boxf) :ウィンドウ内の情報をすべてクリアします。 2(clrobj) :ウィンドウ内のオブジェクトをすべてクリアします。 redraw 0〜redraw2間に記述することで、 従来のclsで起こる書きかえ時のチラツキが起こりません。 p5で、カレントポジションの初期化を指定します。これは以下の中から選びます。 1を設定した場合は初期化、0の場合は初期化を行ないません。 ただし、オブジェクト以外のカレントポジションは画面クリア時に自動的に初期化されます。 モード値 内容 ------------------------------------------------------ 0 カレントポジションの初期化を行なわない 1 カレントポジションの初期化を行なう
/*License:CC0 1.0 全世界 (CC0 1.0) パブリック・ドメイン提供
https://creativecommons.org/publicdomain/zero/1.0/deed.ja */ //マクロここから #define clstype(%1=255,%2=255,%3=255,%4=0,%5=1) if %4 < 3 {color %1,%2,%3} :\ if %4 < 2 {boxf} : if %4 != 1 && %4 <3 {clrobj} :\ if %4 < 3 {color} : if %5 = 1 {pos 0,0} //マクロここまで //サンプルスクリプトここから pos_reset = 1 repeat 3 cls_color(cnt) = 255 loop redraw 0 *start gradf ,,,,1,$505052,$000000 font "Liberation Mono" objmode 2 objsize 280 button gosub "boxfによるcls (clstype,,,,1)",*cls_label button gosub "clrobj (clstype,,,,2)",*clrobj_label button gosub "boxfによるcls : clrobj (clstype) ",*cls_clrobj_label pos 243 input cls_color(0),37,,3 input cls_color(1),37,,3 input cls_color(2),37,,3 pos ,150 input pos_reset,37,,1 color 255,255,255 pos 0,72 font "メイリオ",17 mes "画面クリア時のカラーR" pos 0,72+25 mes "画面クリア時のカラーG" pos 0,72+25+25 mes "画面クリア時のカラーB" pos 0,72+25+25+27 mes "カレントポジションの初期化 \n0=しない 1=する" redraw 1 stop *cls_label redraw 0 clstype cls_color(0),cls_color(1),cls_color(2),1,pos_reset gosub *Return_button_label return *cls_clrobj_label redraw 0 clstype cls_color(0),cls_color(1),cls_color(2),,pos_reset gosub *Return_button_label return *clrobj_label redraw 0 clstype ,,,2,pos_reset gosub *Return_button_label return *Return_button_label pos ,200 button gosub "もとに戻す",*Return_label redraw 1 return *Return_label redraw 0 clstype,,,,pos_reset goto *start //サンプルスクリプトここまで