如何创建棋盘游戏的评估函数(wizwoz)结果

该游戏被命名为wizwoz:

两名球员,红色(简称r)和黄金(简称g)最初选择了两个值n和k。 在板上随机放置k“r”和k“g”创建n×n板。 从玩家r开始,每个玩家将他/她的字母(玩家r的“r”,付款人g的“g”)放在棋盘上的一个空方块中。 在棋盘填满之后,每位棋手的得分等于棋盘上最大的连接区域,其填充了该棋手的颜色(其中一个连接区域为该区域中任何两个正方形存在的路径只包含N / S / E / W移动)。 得分最高的球员获胜,并且获得他/她的得分与其他球员的得分之间的差异。 下面显示了两个已完成游戏的示例,每个玩家概述的最大连接区域。 请注意,在第二个示例中,每个2 r的两个部分都未连接。

在这里输入图像描述

我写了alpha-beta prunning算法并坚持使用评估函数。

任何帮助? 伪代码是优选的。


从一个非常简单的评估功能开始。 例如,只使用最大组件的当前大小。 在您开始工作之后,您可能会担心调整评估试探法。

这里是示例pseduocode(未测试)

components = {k:set([k]) for k in board}
def contract(k1, k2):
    if color(k1) != color(k2):
        return
    new = components[k1]
    if k2 not in new:
        new.union_update(components[k2])
        for x in components[k2]:
            components[x] = new

for x,y:
    contract(board[x,y], board[x,y+1])
    contract(board[x,y], board[x+1,y])

return max(map(len, components))
链接地址: http://www.djcxy.com/p/56353.html

上一篇: How to create an evaluation function for a board game(wizwoz) result

下一篇: beta pruning to minimax algorithm