这是我一直在玩一个星期左右的问题,由同事提出:
想象一下一场比赛 36x36 grid。游戏的目标是创建任意大小的正方形的四个角(例如,2x2,3x3,4x4等)。第一个玩家将游戏块放在除中心四个网格空间之外的任何地方。在第一步之后,玩家可以将他们的游戏块放在网格上的任何位置。放置后,游戏片段无法移动。就是这样;游戏简单而有趣。
我一直试图想出一个算法来赢,或者至少在这场比赛中取得好成绩。有什么建议吗?
答案 0 :(得分:7)
这是一个完美的信息游戏,玩家轮流,如国际象棋,因此国际象棋引擎中使用的相同方法适用于此。使用minimax(可能使用alpha-beta pruning)算法搜索有效移动树。您可以使用一些评估功能来指导您的搜索,支持具有最接近完成的正方形的位置。
答案 1 :(得分:3)
就像FogleBird写的那样,Minimax算法效果最好。问题是如何评估当前董事会的得分。游戏相当复杂,开始时有超过一千个领域。在像tic tac toe这样的小型游戏中,您可以计算所有可能的移动,直到搜索树在minimax中结束,然后您为获胜玩家提供1点,为丢失提供-1并回溯树以找到您的最佳移动。在这个游戏中,你需要某种heuristic来计算三个10次移动后的棋盘分数。
我没有太多关于游戏的信息,所以我只能猜测好的启发式:
有很多可能的启发式方法,大部分时间你需要混合其中一些。
答案 2 :(得分:2)
你需要填充方块还是只放在角落里?
例如,以下是胜利吗?
.......................
.X..X..................
.......................
.......................
.X..X..................
.......................
或以下?
.......................
.XXXX..................
.X..X..................
.X..X..................
.XXXX..................
.......................
或以下?
.......................
.XXXX..................
.XXXX..................
.XXXX..................
.XXXX..................
.......................
答案 3 :(得分:0)
好吧我正在阅读垃圾进入游戏......因为它含糊不清.. 我假设这个游戏类似于“点和线”,其中移动空间是用一条线连接2个相邻的点。所以2x2网格将有9个顶点,4个1x1胜利位置和1个2x2胜利位置。游戏以完成广场的人赢得比赛结束,并且一旦两名球员都用尽了可靠的解决方案,就会打平。
因为你的工作方块有些逻辑很好。您可以计算所有可能框的任何行的成员资格。因此在2x2示例中,径向将具有2个1x1框的成员资格,而一个边将具有一个1x1和一个2x2的成员资格。这种成员资格变得很重要。
在游戏开始时,您将为所有线段生成所有成员资格。制作2份......(就像打战舰一样)ENEMY COPY将被启动到他完成每个盒子所剩下的转弯次数..所以在36x36上将有144个动作来完成大盒子 4套140moves完成4个35x35盒
在移动过程中,您将减少ENEMY COPY上所有受影响的框 在移动过程中,您所做的任何移动都会使包含移动的所有框无效。你将这些设置为负1,或无限或20亿...只是要知道这些方块是不可能的。
你现在创建一个ANTI-ENEMY COPY,它与敌人副本相反..这包含完成给定方格的移动次数。
对于特定的举动..首先检查胜利情况。如果你能够移动并赢得胜利。 (一个广场的antienemy) 然后检查是否需要块。 (任何一方的敌人棋盘)
现在添加一个minimax类型函数,如果你这么倾向..
或使用搜索来找到尽可能多地消除低完成方格的位置,或者创建一条减少反敌板上多个低方块的线。这应该是合理的,因为它不是试图完成任何特定的方格,而是一个极小极大,你的低分射击将是一个更好的场景。