【摘要】:如图15.2所示就是关于棋盘模块的UML图,该图中,除了包含棋盘、全棋盘和对局模块以外,还有蒙特卡洛博弈树节点和评估幕两个模块,这两个模块都是在棋盘的基础上进行继承,并添加了一些自己需要的功能。
15.4.2 棋盘模块的设计
从前面的描述中,我们可以很容易地发现棋盘、全棋盘和对局间是一种天然的继承关系。棋盘仅包含和真实棋盘类似的各种信息,并在此基础上提供了一些简单的分析,使之可以提供更多对对弈有用的信息;全棋盘是在此基础上又额外引入了关于棋子序列的记录,基于此便可以对当前局面生成棋谱并进行保存;对局则是在全棋盘的基础上增加了对弈双方,以及对弈控制的相关策略。
如图15.2所示就是关于棋盘模块的UML图,该图中,除了包含棋盘、全棋盘和对局模块以外,还有蒙特卡洛博弈树节点和评估幕两个模块,这两个模块都是在棋盘的基础上进行继承,并添加了一些自己需要的功能。蒙特卡洛博弈树节点是用来记录在蒙特卡洛博弈树搜索过程中博弈树的节点信息,而评估幕则是用于处理蒙特卡洛博弈树的叶子节点的模拟评估,无论是记录蒙特卡洛博弈树的节点信息还是要对叶子节点进行模拟评估,都需要具有当前状态下棋盘的基本信息,故而,继承自棋盘类是一个很好的选择。Listing15.5是图15.2结构的相关伪码实现。
Listing 15.5 棋盘模块相关伪码
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。