void CMyView::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,a
//横向判断
for(i=xxi<15i++)
{
a=0
for(j=ij<i+5j++)
{
a=a+wzq[j][y]
//五个都是白棋
if(a==5)
{
AfxMessageBox("白棋胜!")
//重新开始
OnStart()
return
}
//五个都是黑棋
if(a==-5)
{
AfxMessageBox("黑棋胜!")
OnStart()
return
}
}
}
//竖向判断
for(i=yyi<15i++)
{
a=0
for(j=ij<i+5j++)
{
a=a+wzq[x][j]
if(a==5)
{
AfxMessageBox("白棋胜!")
OnStart()
return
}
if(a==-5)
{
AfxMessageBox("黑棋胜!")
OnStart()
return
}
}
}
//向右下角
//判断起点位置
if(x<y)
{
if(xx==0)
yy=y-x
}
else
{
if(yy==0)
xx=x-y
}
//参数over=1时退出循环
int over=0
do
{
a=0
for(i=0i<5i++)
{
if((xx+i)<19||(yy+i)<19)
{
a=a+wzq[xx+i][yy+i]
if(a==5)
{
AfxMessageBox("白棋胜!")
OnStart()
return
}
if(a==-5)
{
AfxMessageBox("黑棋胜!")
OnStart()
return
}
}
//到了边界
else
over=1
}
xx+=1
yy+=1
}while(over==0)
//向左下角
if(y>(18-x))
{
if(x>13)
{
yy=y-(18-x)
xx=18
}
else
{
yy=y-4
xx=x+4
}
}
else
{
if(y<5)
{
xx=x+y
yy=0
}
else
{
yy=y-4
xx=x+4
}
}
over=0
do
{
a=0
for(i=0i<5i++)
{
if((xx-i)>=0||(yy+i)<19)
{
a=a+wzq[xx-i][yy+i]
if(a==5)
{
AfxMessageBox("白棋胜!")
OnStart()
return
}
if(a==-5)
{
AfxMessageBox("黑棋胜!")
OnStart()
return
}
}
//到了边界
else
over=1
}
xx-=1
yy+=1
}while(over==0)
}
1.MFC的对话框程序。首先熟悉MFC的对话框程序。2.熟悉GDI *** 作,也就是画图 *** 作。
3.制定五子棋的规则,带不带禁手,支不支持悔棋,支持的话,最多多少步。
4.数据结构的存储,怎么存储黑白棋,怎么存储棋盘。
5.怎么判断判断落子的地方是否有棋子。
6.怎么判断已经有五个,判断胜负。
7.怎么设计电脑的AI,AI算法去看看,什么贪心算法,复权值,a-b剪枝算法,很多算法。
8.怎么设置AI的等级,也就是电脑的聪明程度。
很复杂的,还不如先做个局域网的五子棋。AI算法不是一般人可以写的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)