我正在用Prolog实现奥赛罗游戏。游戏板被表示为列表列表。
我正面临着一个问题,在采取行动后翻转棋子。
我的策略是从我放置作品的位置(比如黑色)看所有8个方向,
找到封闭的黑色部分,然后在我的部分之间翻转每一个白色部分。
所以,我有8个独立的谓词来做这件事。
问题是,在我进行移动之后,我会按顺序调用它们,如果这些谓词中的任何一个失败,整个操作就会失败。
有什么办法可以绕过这个问题吗?或者也许我的方法是错误的?
发布于 2010-02-14 22:46:36
正如Cari Norum所建议的,我只是让我的谓词永远不会失败。所以如果其中一个失败了,我就让它返回当前的板子状态。这似乎很管用。
发布于 2010-02-14 21:49:44
也许你应该试着对谓词进行OR运算?
我知道我在大学时为CS课程写了这篇文章,希望你不要用stackoverflow作弊……;)
https://stackoverflow.com/questions/2260197
复制相似问题