五子棋C语言程序代码
五子棋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);
}
}
本文档为【五子棋C语言程序代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。