1

私は現在、SWI-Prologで小さなテキストベースのアドベンチャーゲームをプログラミングしています。したがって、ユーザーは「goto(room)」や「gotoroom」などのコマンドを実行する必要があります。

ただし、問題は、常にコマンドを完全に停止して終了する必要があることです。つまり、「goto(room)」です。「goto(room)」の代わりに。これはあまりユーザーフレンドリーではありません。

コマンドを読み取ってから入力を実行する述語があります。終止符がない場合(すでに終止符がある場合は入力を実行する必要があります)、どうすれば自動的に終止符を追加できますか?

前もって感謝します!

よろしく、

ヴォルカー

4

1 に答える 1

1

明らかに、あなたはまたはread/1いくつかのバリエーションを使用しています。これは有効なプロローグ用語を読むために使用されることになっています(そしてそれがあなたが終止符を必要とする理由です)。

解決策は、入力を自分で解析し(プリミティブchar io読み取りユーティリティ、およびio一般(おそらく読み取りユーティリティのみが必要です)をチェックします)、それを用語に変換することです。

さらに、DCGを使用して小さな自然言語を作成して使用することができます。たとえば、ユーザーはのgoto room代わりに書くことができgoto(room)ます。

一方で、私は個人的に、終止符をスキップしなければならないことは、とにかくプロローグ用語を入力しなければならない場合、はるかにユーザーフレンドリーになるとは思いません。

于 2013-01-02T15:58:11.103 に答える