111,126
社区成员
发帖
与我相关
我的任务
分享void CMainWnd::IsWinner(int pos,int chess)
{
int updowncount=0;
int leftrightcount=0;
int leftxiecount=0;
int rightxiecount=0;
int oldi=0;
BOOL m_bUp=TRUE;
BOOL m_bDown=TRUE;
BOOL m_bLeft=TRUE;
BOOL m_bRight=TRUE;
BOOL m_bLeftUp=TRUE;
BOOL m_bRightDown=TRUE;
BOOL m_bLeftDown=TRUE;
BOOL m_bRightUp=TRUE;
//上数
for(int i=1;i!=5;i++)
{
if(m_nChess[pos-i*20]==chess)
{
if(m_bUp)
{
if(pos-i*20>0)
updowncount++;
}
}
else
{
m_bUp=FALSE;
break;
}
}
//下数
for(int i=1;i!=5;i++)
{
if(m_nChess[pos+i*20]==chess)
{
if(m_bDown)
{
if(pos+i*20<300)
updowncount++;
}
}
else
{
m_bDown=FALSE;
break;
}
}
if(updowncount>=4)
{
if(chess==BLACK)
MessageBox(_T("Black is winner"),_T("Res"),MB_OK);
else if(chess==RED)
MessageBox(_T("Red is winner"),_T("Res"),MB_OK);
IngoreMouseMsg();
}
//左右数
for(int i=1;i!=5;i++)
{
if(m_nChess[pos-i]==chess)
{
if(m_bLeft)
{
if(pos-i>=(int)(pos/20)*20)
leftrightcount++;
}
}
else
{
m_bLeft=FALSE;
break;
}
}
for(int i=1;i!=5;i++)
{
if(m_nChess[pos+i]==chess)
{
if(m_bRight)
{
if(pos+i<(int)(pos/20)*20+20)
leftrightcount++;
}
}
else
{
m_bRight=FALSE;
break;
}
}
if(leftrightcount>=4)
{
if(chess==BLACK)
MessageBox(_T("Black is winner"),_T("Res"),MB_OK);
else if(chess==RED)
MessageBox(_T("Red is winner"),_T("Res"),MB_OK);
IngoreMouseMsg();
}
//正斜着数
for(int i=1;i!=5;i++)
{
if(m_nChess[pos-i*20-i]==chess)
{
if(m_bLeftUp)
{
if(pos-i*20-i>0)
rightxiecount++;
}
}
else
{
m_bLeftUp=FALSE;
break;
}
}
for(int i=1;i!=5;i++)
{
if(m_nChess[pos+i*20+i]==chess)
{
if(m_bRightDown)
{
if(pos+i*20+i<300)
rightxiecount++;
}
}
else
{
m_bRightDown=FALSE;
break;
}
}
if(rightxiecount>=4)
{
if(chess==BLACK)
MessageBox(_T("Black is winner"),_T("Res"),MB_OK);
else if(chess==RED)
MessageBox(_T("Red is winner"),_T("Res"),MB_OK);
IngoreMouseMsg();
}
//反斜着数
for(int i=1;i!=5;i++)
{
if(m_nChess[pos+i*20-i]==chess)
{
if(m_bLeftDown)
{
if(pos+i*20-i<300)
leftxiecount++;
}
}
else
{
m_bLeftDown=FALSE;
break;
}
}
for(int i=1;i!=5;i++)
{
if(m_nChess[pos-i*20+i]==chess)
{
if(m_bRightUp)
{
if(pos-i*20+i>0)
leftxiecount++;
}
}
else
{
m_bRightUp=FALSE;
break;
}
}
if(leftxiecount>=4)
{
if(chess==BLACK)
MessageBox(_T("Black is winner"),_T("Res"),MB_OK);
else if(chess==RED)
MessageBox(_T("Red is winner"),_T("Res"),MB_OK);
IngoreMouseMsg();
}
return ;
}