五子棋C语言程序代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
五子棋C语言程序代码#include
#include
#include
void drawPanel();
int isWin(int,int);
int color = 1; //1-红色2-白色
int chessman[15][15];
//主函数
void main()
{
initgraph(620,620); //产生窗体
//画棋盘
drawPanel();
//画棋子
//1.定义鼠标事件
MOUSEMSG m;
HWND wnd = GetHWnd(); //定义当前窗体的句柄while(true)
{
m = GetMouseMsg(); //获取鼠标事件对象
if(m.uMsg == WM_LBUTTONDOWN)
{
//获取点击的坐标
int x = m.x;
int y = m.y;
//换算成二维数组中的下标
int i = x/40;
int j = y/40;
//显示点击的坐标
/*char msg[100];
sprintf(msg,"%d,%d",i,j);
MessageBoxA(wnd,msg,"消息",MB_OK);*/
if(color==1)
{
setfillstyle(RGB(255,0,0));
fillcircle(40*i+20,40*j+20,20);
chessman[i][j] = 1;
}
else if(color==2)
{
setfillstyle(RGB(255,255,255));
fillcircle(40*i+20,40*j+20,20);
chessman[i][j] = 2;
}
//判断输赢result => 1
int result = isWin(i,j);
if(result ==1)
{
if(color==1)
{
MessageBoxA(wnd,_T("恭喜,红方获胜!"),"消息",MB_OK);
}
else if(color==2)
{
MessageBoxA(wnd,_T("恭喜,白方获胜!"),"消息",MB_OK);
}
break;
}
//切换对方下子
color = color == 1 ? 2 : 1 ;
}
}
getch();
closegraph(); //关闭窗体
}
int isWin(int x,int y)
{
int count=0;//计数器
int i;
//横向
for(i=0;i<15;i++)
{
if(chessman[i][y]==color)
{
count++;
if(count==5)
return 1;
}else
{
count=0;
}
}
//竖向
for(i=0;i<15;i++)
{
if(chessman[x][i]==color)
{
count++;
if(count==5)
return 1;
}else
{
count=0;
}
}
return 0;
}
void drawPanel()
{
int i;
//画横线
for(i=0;i<15;i++)
{
line(20,20+40*i,20+14*40,20+40*i);
}
//画竖线
for(i=0;i<15;i++)
{
line(20+40*i,20,20+40*i,20+14*40);
}
}