Prolog 写経記 その 83 text/5

(ほぼ) 毎日淡々と Prolog を写経します.元ネタはこちら.

Prologユーティリティライブラリ

Prologユーティリティライブラリ

続けて text/5 を写経します.激しくヤケ気味.

解説

text(Y, X, LineType, Attr, Text) は端末の特性を利用して項 Text を出力する.

ふーん.
おらいが使っているのは Windows 版の SWI-Prolog なんですが...
ちゃんと役に立つのでしょうか?
かなり微妙...
(こぴぺ)

モード

text(+, +, +, +, +)

ふむ.

定義

では,こいつの定義を写経しませう.

text(Y, X, normal, Attr, Text) :-
	cursor(Y, X),
	line_type(normal),
	text_attr(Attr),
	write(Text).
text(Y, X, wide, Attr, Text) :-
	cursor(Y, X),
	line_type(wide),
	text_attr(Attr),
	write(Text).
text(Y, X, high, Attr, Text) :-
	cursor(Y, X),
	line_type(top),
	text_attr(Attr),
	write(Text),
	Y1 is Y + 1,
	cursor(Y1, X),
	line_tye(bottom),
	write(Text), !.

Windows 版 SWI-Prolog ではうまく動かなかった述語がいっぱい...

注意

Y(jump)XText を表示する行と列の数である.Attr はテキストの属性を示す (text_attr/1 参照).LineTypenormalhigh あるいは wide である.highText は行 YY + 1 に表示される.

Windows 版の SWI-Prolog でちゃんと動く可能性は...
微塵もありませんかそうですか.

では使用例を写経しませう.

display_status_line(Status) :-
	text(1, 1, normal, reverse, Status).

使ってみませう.

9 ?- display_status_line(hoge).
1f5hoge

Yes

ぐはぁっ,予想どうりダメっぽい.
そんなわけで (どんなわけで?),「8 章 画面管理終了」.
激しくつまらなかったなぁ...