人机博弈-吃子棋游戏(二)算气

本文详细阐述了吃子棋游戏中计算棋子气的算法,通过检查棋子周围空白并避免重复计算,提高效率。算法来源于http://www.cnblogs.com/tuanzang/archive/2013/02/27/2935861.html并进行了优化,以满足实际应用需求。了解围棋算法的读者可深入阅读。
摘要由CSDN通过智能技术生成

算法过程如下,输入计算棋气的起始子,检查我方棋子其周边的空白,并查看此空白是否已经计算过气了,如果没有计算过气加一,如果已经计算则略过,进而递归调用计算我方棋子上下左右子的气,最后算法会返回棋串的子数和气数。算法注释十分详尽。

这个计算棋子气的算法,参考http://www.cnblogs.com/tuanzang/archive/2013/02/27/2935861.html,结合我们自身的应用需要优化和修改。这篇博文介绍了更多关于围棋的算法,有兴趣的朋友可以进一步阅读。

原文suanqi函数会重复计算已经计算过的棋串效率不高,应该对已经算过气的函数不在重复算气,并且我们需要知道棋串的长度。


#include <iostream>
#include <utility>

#define EDGE 19
int go[EDGE][EDGE];//棋盘数据,0为黑棋,1为白棋,2为空白
int gokong[EDGE][EDGE]; //0=该空点未曾计算过气,1=已计算,避免重复计算公气
int gozi[EDGE][EDGE]; //0=该子未计算串气,1=已计算,避免重复计算同一个子的气
int goqi; //此棋串气数
int goziLength;//此棋串子数
int g_gozi[EDGE][EDGE];


 void str_qi(int x,int y,int hb)
  {
    //本函数计算 x,y 处的hb颜色棋子的气
    gozi[x][y]&
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值