首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用prolog表示connect 4的游戏板

用prolog表示connect 4的游戏板
EN

Stack Overflow用户
提问于 2010-11-18 10:58:03
回答 2查看 3.4K关注 0票数 0

我正在尝试用SWI Prolog制作一个交互式的、基于文本的connect4游戏,但我在如何开始时有点卡住了。我不理解的是如何表示游戏板,因为我不认为我可以拥有所有规则都可以看到和修改的数组或变量。

任何关于如何开始的见解都将不胜感激!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-18 13:44:29

在PROLOG中,适合您的情况的数据结构的适当表示通常是问题的一半。

有很多方法可以在网格中表示事物,比如PROLOG中的二维数组,但我认为最简单的方法可能是基于列表的,因为对列表结构有很多固有的支持:

1.列表列表。,例如,对于3x3,[[a,b,c],[d,e,f],[g,h,i]]。您对此结构的解释将在您的代码中固有,以便遍历和操作它(即,[a,b,c]可以是行,也可以是列,这取决于您,只要保持一致)。要访问单个单元格,需要使用计算(或匹配到)特定位置的谓词来遍历结构。

2.术语列表。,例如,[cell(0,0,a), cell(0,1,b), ..., cell(2,2,i)]。这将允许您直接取出单个单元格,例如通过select(cell(1,2,Value), L, Rem)从单元格列表L中提取位置为1,2的单元格的Value,允许您对其进行操作,并通过创建新的cell/3术语并将其附加到Rem来再次创建完整的列表。

我建议不要在编写代码时使用assert/retract机制来处理这个问题;这是混乱的、不必要的,并且不利于编写易于理解和“可调试”的PROLOG代码。

票数 2
EN

Stack Overflow用户

发布于 2010-11-18 11:19:43

(我希望你说的是this游戏)。

你有几个选择。

您可以拥有整个字段的列表,如[空,空,黄,红,空,红,黄,黄,红,红]。

或者,您可以断言/收回事实,如

红色(2,4)。红色(1,3)。黄色(2,2)。红色(3,2)。

这个游戏很简单,所以选择与你的直观表示相匹配的东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4211274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档