刘声传毕业设计初稿

2026/1/18 12:03:54

return; } else {

putdown(bpointcan1); return; } }

上面又有两个新函数,分别定义为空函数,如下: 搜索最佳位置 void bestputdown(int i,int j); 放下黑棋 void putdown(CPoint point); 现在,对上面两个空函数进行定义

在指定位置下棋:

由于putdown(CPoint point)函数的原理非常简单,我们先说明如下:

//黑棋下

void CMy3_1View::putdown(CPoint point)

{

CDC *pDC=GetDC(); CDC Dc;

if(Dc.CreateCompatibleDC(pDC)==FALSE) AfxMessageBox(\ Dc.SelectObject(m_bmblack); pDC->BitBlt(point.x*20+32,point.y*20+32,160,160,&Dc,0,0,SRCCOPY);

wzq[point.x][point.y]=-1;

//由于原来我们检查是否结束时用的是鼠标点下的坐标,而现在

//putdown(CPoint point)函数用的是数组棋盘的坐标,所以必须转换 CPoint overpoint;

overpoint.x=point.x*20+30; overpoint.y=point.y*20+30; over(overpoint); colorwhite=true;

}

搜索最佳落棋点:

现在还有void bestputdown(int i,int j)函数没有定义。它的实现原理是:在四个方向上,各自计算那个方向上棋子的状态,利用原来定义的白棋为1,黑棋为-1的思想,让同个方向上的五个棋子的值相加,取绝对值并赋值给为这个方向定义的局部变量num[i]。

如果几个棋子是同色的,无论黑白,它的绝对值必然大,而对于几个棋子中有黑棋和白棋的,其值必然相加而抵消变小。所以我们可以利用这种方法来寻找旁边有多个同色棋子的空位置(前面已经具体说明)。

在每一个棋盘位置,计算以它为起点的四个方向(横、竖、撇、捺),再比较这四个方向中哪个值最大,然后在这个方向上寻找落棋点。

//检查四个方向,各算出五个棋子的和并赋值 void CMy3_1View::bestputdown(int i,int j) {

//四个方向的值 int num[4]; int a,k;

/////////////////////////////// num[0] --> a=0; if(i<15)

for(k=0;k<5;k++) a=a+wzq[i+k][j]; num[0]=abs(a);

////////////////////////////// num[1] \ a=0; if(j<15)

for(k=0;k<5;k++) a=a+wzq[i][j+k]; num[1]=abs(a);

/////////////////////////////// num[2] \


刘声传毕业设计初稿.doc 将本文的Word文档下载到电脑
搜索更多关于: 刘声传毕业设计初稿 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219