2013-01-02 37 views
1

我目前正在SWI-Prolog編程一個小型的基於文本的冒險遊戲。因此,用戶將不得不發出諸如「goto(room)」或「goto room」之類的命令。Prolog讀取輸入沒有句號

但問題是,你總是有一個句號,即 完成命令「後藤(室)」。而不是「goto(room)」,這不是非常用戶友好的。

我有一個謂詞,它讀取一個命令然後執行輸入,如果沒有(如果已經存在的話)是一個輸入應該只執行)

在此先感謝

問候,

沃爾克

+0

你有沒有試過檢查它是否沒有完整的停止然後追加一個呢? –

+0

爲什麼不寫一個謂詞,它會在你的情況下得到(讀取)輸入字符串「goto room」或「goto(room)」,然後解析字符串,並根據解析的結果調用適當的謂詞(goto(room)。在你的情況下)。 – ssBarBee

回答

1

很顯然,你正在使用read/1或一些變化;?!這是應該被用來讀取VA蓋子序言術語(這就是爲什麼你需要一個完整的)。

的解決辦法是分析你自己的輸入(檢查primitive char ioread utilitiesio in general(你可能只需要讀公用事業雖然)),然後convert它的術語。

此外,你可以創建一個小的自然語言與DCGs和使用;例如,用戶可以只寫goto room而不是goto(room)

在另一方面,我個人不認爲有跳過完全阻止它會有很多更加人性化,如果他們無論如何都要鍵入序言條款。