SMILE BASIC 小技(5)
コンソールへのPRINT時に文字列をセンタリング(中央によせて表示すること)したいことは多い。
LOCATEのX位置を決めるには、画面幅(50文字)の半分(25文字)から、表示したい文字列の長さの半分を引けばよい。
毎回計算するのはめんどうなので、次のような記述を使う。
A$="文字列" LOCATE FLOOR(25-LEN(A$)/2),CSRY PRINT A$
問題になるのは文字列の長さが奇数になる場合で、2で割り切れないので左半分と右半分のどちらが長くなる。
これは個人の好みでどちらかに寄せるしかない。
私は左半分の方を少しだけ長くなるようにした。
右半分の方を少しだけ長くしたい場合は、上記の2行目を
LOCATE FLOOR(25.5-LEN(A$)/2),CSRY
に変えればよい。(FLOORの中に0.5を足す。)
少し応用して、上下画面、WIDTHのサイズに対応するようにしたのが以下。
A$="文字列" D%=DISPLAY() W%=WIDTH() LOCATE FLOOR((50-D%*10)/S%/2-LEN(A$)/2),CSRY PRINT A$
なお、XSCREEN 4の時は、上画面が幅50文字から40文字になるが、現状(Ver.3.2.1)ではXSCREENの設定をとる方法がないので、上記はXSCREEN 4に対応していない。
XSCREEN 4の時は、
LOCATE FLOOR(20/S%-LEN(A$)/2),CSRY
とする。