第一范文网 - 专业文章范例文档资料分享平台

刘声传毕业设计初稿

来源:用户分享 时间:2025/5/19 5:20:50 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

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文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c8x0oi08gu87f1wl0kih4_5.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top