Prolog 写経記 その 77 cursor/2
(ほぼ) 毎日淡々と Prolog を写経します.元ネタはこちら.
- 作者: ボグダンフィリピッチ,中島誠,伊藤哲郎
- 出版社/メーカー: 海文堂出版
- 発売日: 1990/08
- メディア: 単行本
- 購入: 4人 クリック: 33回
- この商品を含むブログ (68件) を見る
cursor/2
を写経します.解説
cursor(Y, X)
は,Y
とX
をそれぞれ行と列を表す整数としてカーソルの是立ち位置を与える.
cursor(Direction, Amount)
はカーソルを相対位置に移動させる.Direction
はleft
,right
,up
あるいはdown
のいずれか 1 つであり,Amount
は整数である.
ふーん.
おらいが使っているのは Windows 版の SWI-Prolog なんですが...
ちゃんと役に立つのでしょうか?
かなり微妙...
(こぴぺ)
モード
cursor(+, +)
ふむ.
定義
では,こいつの定義を写経しませう.
cursor(Y, X) :- integer(Y), !, escape(Y, X, 'f'). cursor(Direction, Amount) :- cursor_code(Direction, Code), escape(Amount, Code). cursor_code(left, 'D') :- !. cursor_code(right, 'C') :- !. cursor_code(up, 'A') :- !. cursor_code(down, 'B').
つまんね.
注記
cursor/2
はカーソルの位置を決める 2 通りの方法を提供している.どちらの方法を使うかは最初の引数のタイプによっている.整数の場合は絶対位置を与える述語,left
,right
,up
,down
の場合は相対位置を与える述語となる.画面の左上隅は座標(1, 1)
で,右下隅は(24, 80)
になっている.
あぁ,80×25 な端末ってありましたね.メインフレーム時代にはお世話になりっぱなしでしたよ.
でもでも,もう時代が違いますよ?
例
では使用例を写経しませう.
cursor_home :- cursor(1, 1).
cursor/2
を使った述語の定義のみ.
試しに使ってみますか.
4 ?- cursor_home. 1f Yes
予想通り.(^^;
制御コードが文字として表示されて終わりです.だめじゃん...