基于MFC的五子棋应用(二)
书接上文,上回讲到五子棋MFC界面及资源视图 点这里
这回来讲一讲落子的实现和胜负的判断
判断胜负:
通过一个over()函数进行实现,落子后判断游戏是否结束,若游戏结束则跳出对话框宣布胜利方,否则变换光标棋子,并转为对方落子
思路:落子位置为中心,检查各个方向上的连续五个棋子是否同色,是则结束并重新开始。五子棋数组赋值为1和-1 相连五子的和的绝对值 = 5则相连
这里将白子和黑子用1、-1表示最主要的目的是为了实现人机对战时,计算机算法的实现(在这里先埋个伏笔)
over()函数具体代码如下:
void CWuZiQiView::over(CPoint point)
{
//获取鼠标指向数组位置
int x=(point.x-30)/20;
int y=(point.y-30)/20;
//计算开始判断的坐标 xx,yy
int xx,yy;
if(x<4)
xx=0;
else
xx=x-4;
if(y<4)
yy=0;
else
yy=y-4;
int i,j,k;
//横向判断
for(i=xx;i<15;i++)
{
k=0;
for(j=i;j<i+5;j++)
{
k=k+wzq[j][y];
//五个都是白棋
if(k==5)
{
AfxMessageBox("白棋胜-");
//