正在加载图片...
第4期 李霞丽,等:基于棋型的藏族“久”棋计算机博弈研究 ·581 00000000000000 式中:move为移动的评分,kill为单跳吃(连跳 0000000000000 0 吃)的总评分,triple为是否阻止敌方成为四子棋 000000000 0000 0 0000000000000 0 型的总评分,sugare为己方在跳吃或者移动以后 0000000000000 0 成为四子棋型的总评分。 0000002010000 0 根据上述的策略评估方法,在布局阶段和战 00000011100000 TB= 0000020200000 0 斗阶段,可以选出较优的攻防策略。 000000000 0000 0 0 0000000 0000 0 5“久”棋博弈软件的设计和实现 0000 0000 0 0000 0 0 0000000 0000 0 “久”棋博弈软件由布局阶段和战斗阶段组 0 0000 0 00 0 0000 0 成。软件的整体设计如图9所示。布局界面接受 00000000000000 用户点击,把棋子下到界面上某位置,并标记下 (2) 把矩阵TS扩充成与TB规模相同的矩阵TSE, 子的顺序。战斗界面接受用户的点击,实现提子 如式(3)所示: 和下子的功能,并判断下子后是否形成方,询问 01000000000000 用户是否吃子。 11000000000000 久棋博弈软件 00000000000 00 0 000000 0 000000 0 000000 0 000000 布局阶段 战斗阶段 00000 0 0 0 0000 0 0 TSE= 000000 000000 布局界面 布局引擎内核 战斗界面 000000 0 0 战斗引擎内核 0000 0 0 0000000000000 0 图9程序结构 000000 0 00000 0 Fig.9 Program structure 000 000 0 0 000 0 0 0 0000000000000 0 5.1 布局引擎内核 000000 0 0000 00 0 布局阶段的引擎由棋型匹配、防御策略、攻 100000000000000 击策略、连子策略组成。 (3) 根据矩阵乘法的性质,把棋型矩阵扩展后的 布局阶段的伪代码如下: TSE和矩阵TB的转置矩阵相乘,如式(4): voidplaygame(){ TR=TSE.TBT (4) FormGet();/∥从棋谱数据库中获取棋型 如果相乘的结果TR和TSE相等,则当前的 (棋谱数据库中无棋型) 局面中存在三角棋型。同理,其他棋型也能通过 defense(b),∥先采取防守策略 上述的方法进行识别。 局面安全)判断需不需要防守,局 4.2布局阶段的攻防策略 面安全则进攻 布局阶段,设计3种策略:防守、攻击、连子, attack(b): 3种策略的优先级别从高到底,即防守策略有效 elseif(没有防守的策略和进攻策略)H 时,进攻和连子策略不考虑,进攻策略有效时,连 chain(b);/连子策略 子策略不考虑。防守策略主要基于三子棋型、三 } 角棋型及对角棋型。攻击策略主要基于二子模型。 连子策略是在最新下的子的周围随机选择落点。 防守策略: 每种策略中,针对不同棋型,赋予不同的评估 Publicbooleandefense(board b) 分值。防守策略中,三子棋型为5分,三角棋型 tribe(i,j):/检测三子棋型 为4分,对角棋型为3分。攻击策略中,二子棋型 triangle(i,j/检测横三角棋型 为5分。 contrast(ij);∥检测对角棋型 4.3战斗阶段的攻防策略 sortMapBy Value(),/排序权值 在战斗阶段,使用式(⑤)的评估方法: Eva move +kill triple square (5) ∥进攻策略:TB=   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   (2) 把矩阵 TS 扩充成与 TB 规模相同的矩阵 TSE, 如式 (3) 所示: TSE=   0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   (3) 根据矩阵乘法的性质,把棋型矩阵扩展后的 TSE 和矩阵 TB 的转置矩阵相乘,如式 (4): TR = TSE·TBT (4) 如果相乘的结果 TR 和 TSE 相等,则当前的 局面中存在三角棋型。同理,其他棋型也能通过 上述的方法进行识别。 4.2 布局阶段的攻防策略 布局阶段,设计 3 种策略:防守、攻击、连子, 3 种策略的优先级别从高到底,即防守策略有效 时,进攻和连子策略不考虑,进攻策略有效时,连 子策略不考虑。防守策略主要基于三子棋型、三 角棋型及对角棋型。攻击策略主要基于二子模型。 连子策略是在最新下的子的周围随机选择落点。 每种策略中,针对不同棋型,赋予不同的评估 分值。防守策略中,三子棋型为 5 分,三角棋型 为 4 分,对角棋型为 3 分。攻击策略中,二子棋型 为 5 分。 4.3 战斗阶段的攻防策略 在战斗阶段,使用式 (5) 的评估方法: Eva = move+kill+triple+square (5) 式中:move 为移动的评分,kill 为单跳吃 (连跳 吃) 的总评分,triple 为是否阻止敌方成为四子棋 型的总评分,suqare 为己方在跳吃或者移动以后 成为四子棋型的总评分。 根据上述的策略评估方法,在布局阶段和战 斗阶段,可以选出较优的攻防策略。 5 “久”棋博弈软件的设计和实现 “久”棋博弈软件由布局阶段和战斗阶段组 成。软件的整体设计如图 9 所示。布局界面接受 用户点击,把棋子下到界面上某位置,并标记下 子的顺序。战斗界面接受用户的点击,实现提子 和下子的功能,并判断下子后是否形成方,询问 用户是否吃子。 久棋博弈软件 布局阶段 战斗阶段 布局界面 布局引擎内核 战斗界面 战斗引擎内核 图 9 程序结构 Fig. 9 Program structure 5.1 布局引擎内核 布局阶段的引擎由棋型匹配、防御策略、攻 击策略、连子策略组成。 布局阶段的伪代码如下: voidplaygame(){ FormGet();//从棋谱数据库中获取棋型 if(棋谱数据库中无棋型) defense(b);//先采取防守策略 if(局面安全){//判断需不需要防守,局 面安全则进攻 attack(b); } elseif(没有防守的策略和进攻策略){ chain(b);//连子策略 } } //防守策略: Publicbooleandefense(board b){ tribe(i,j); //检测三子棋型 triangle(i,j); //检测横三角棋型 contrast(i,j); //检测对角棋型 sortMapByValue(); //排序权值 } //进攻策略: 第 4 期 李霞丽,等:基于棋型的藏族“久”棋计算机博弈研究 ·581·
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有