我正在创建一个基于prolog逻辑基础的游戏,我想为它创建一个用户界面。编程语言与prolog集成的任何想法?
答案 0 :(得分:7)
起初看起来有点反直觉,但我实际上建议制作基于网络的GUI。一旦你仔细考虑(并查看eclipse clp的http功能,http://eclipseclp.org/doc/bips/lib/http/index.html),你就会发现Prolog实际上非常适合作为编写应用程序服务器的语言。我已经做到了这一点,取得了巨大的成功它避免了说服某人查看非标准UI框架的艰难战斗。此外,它可以立即实现移动,并且可以很好地区分问题。
这是一个极简主义的例子。当你运行它(eclipse -s http.pl
,然后调用runserver
)时,你可以在localhost:8000打开你的浏览器来调用下面的processURL中定义的路由谓词:
http.pl:
:- lib(http),
use_module(http_method).
runserver :-
http_server(8000).
http_method.pl:
:- module(http_method).
http_method("GET", Url, Params, Contents, 200, [contentLength(CL), contentType(mt(text, html))]):-
printf("%w\n", [http_method(Url, Params)]), flush(output),
http_process(Url, Contents),
string_length(Contents, CL).
http_process(Url, Contents) :-
split_string(Url, "/", "/", L),
printf("URL split: %w\n", [L]), flush(output),
processURL(L, Contents).
processURL([""], "Hello World!").
processURL(["route1"], "You are at /route1").
答案 1 :(得分:6)
如果你使用SWI-Prolog,并且知道Qt,你可以使用QtCreator设计师。一个例子是在线here。
答案 2 :(得分:3)
我认为您可以将SWi-Prolog与XPCE一起使用 此外,还有一个带SWI-Prolog的C#接口。
答案 3 :(得分:3)
如果您使用SWI-Prolog,您可以使用QtCreator,XPCE或使用Web界面。 您也可以使用Swing(Java)编写并使用JPL接口或C ++并使用CPL接口 或者C#接口并使用swicli。 Web界面教程http://www.pathwayslms.com/swipltuts/html/index.html
答案 4 :(得分:2)
我看到了几种可能的方式:
使用基于Prolog的服务器的Web界面可能很好,但通常Web服务器不是Prolog系统开发人员的主要关注点,因此它可能没有经过良好测试,可能不支持所有HTTP功能或HTTPS或压缩......还有可能的安全问题。使Prolog服务器只能本地访问,并让另一个Web服务器与外部世界通信可能是个好主意(使用Prolog服务器的方式通常是数据库服务器用于Web)。
对于Prolog中的GUI,XPCE或Qt可以与SWI-Prolog一起使用,正如其他答案所提到的那样。其他实现也可以有GUI设施。
但我认为应该使用每个工具来完成它所擅长的任务,而Prolog可能不是用户界面或网络服务器的最佳工具,所以我选择了3,4或5的选项。我的清单。
对于Prolog系统,我使用:
ECLiPSe CLP
<强> B-Prolog的强>
当然,Prolog和其他语言之间的命令行(stdin / stdout)通信应该适用于每个Prolog系统,但它可能很慢。
答案 5 :(得分:0)
使用xpce Prolog,一个用于接口的swi prolog的嵌入式库。