2016-07-15 4 views
1

私はPrologでテキストベースのアドベンチャーゲームを書こうとしています。したがって、私はたくさんのwriteline文を持っています。私は私のテキストの出力処理を遅くすることができるかどうか疑問に思っていた。したがって、次のシナリオを想像してみてください。Prolog Delay Textの実行

私は印刷されたテキストブロックAを持っています。 テキストブロックBは2秒後に印刷されますが、: - 記号はプロローグなしです。

私の最初のアイデアは、現在の時刻と現在の時刻+2秒を比較するループを書くことでしたが、: - 記号を取り除くことはできません。

残念ながら;私はPrologの初心者であり、Iiはスレッド処理についての手掛かりを持っていません。

文が役に立つかもしれないが、それは全く動作しません:

delayText([H|T]) :- 
    put_char(H), 
    flush_output, 
    sleep(0.1), 
    delayText(T). 
delayText([]). 

フラッシュ出力も睡眠どちらも動作するようです。

私はEclipseでProDTを使用しています。 ありがとうございます。 Chris。

答えて

0

私はあなたがあなたのゲームのために書き込みを実現する方法に関してはわからないんだけど、あなたの質問にサンプルコードで使用されるようsleep/1はそうのような単純な書き込みと一緒に使用することができます。

delayText([]). 
delayText([H|T]) :- 
    write(H), 
    sleep(1),  % Time in seconds 
    delayText(T).