#include <graphics.h>
#include <conio.h>
#include<windows.h>
int num=-1;
int piece[15][15];
IMAGE bgp;
void put_background()//背景图
{
putimage(0,0,240,240,&bgp,69,71);
putimage(240,0,240,240,&bgp,69,71);
putimage(0,240,240,240,&bgp,69,71);
putimage(240,240,240,240,&bgp,69,71);
}
void draw_line()//画线
{
setlinecolor(RED);
for(int x=15;x<480;x+=30)
line(x,15,x,465);
for(int y=15;y<480;y+=30)
line(15,y,465,y);
}
void draw_point()//画中间的四个点
{
setfillcolor(BLACK);
fillcircle(4*30-15,4*30-15,3);
fillcircle(4*30-15,12*30-15,3);
fillcircle(8*30-15,8*30-15,3);
fillcircle(12*30-15,4*30-15,3);
fillcircle(12*30-15,12*30-15,3);
}
void initpiece()
{
for(int i=0;i<15;i++)
for(int j=0;j<15;j++)
piece[i][j]=0;
}
int change_piece(int x,int y)
{
if(piece[x][y]!=0)
return 0;
else
piece[x][y]=num;
return 1;
}
void draw_piece(int m,int n)//设置num=-1落子为白棋
{
if (num==-1)
setfillcolor(WHITE);
else
setfillcolor(BLACK);
int x,y;
x=m/30;
y=n/30;
if(change_piece(x,y)==0)
return;
fillcircle(m-(m%30)+15,n-(n%30)+15,13);
num*=-1;
}
int check_five_piece(int x,int y)//判断是否五子连线
{if(x<2 || y<2 || x>12 || y>12)
return 0;
if(piece[x][y] == piece[x-1][y] && piece[x][y] == piece[x-2][y] && piece[x][y] == piece[x+1][y] && piece [x][y] == piece[x+2][y])
return 1;
if(piece[x][y] == piece[x][y-1] && piece[x][y] == piece[x][y-2] && piece[x][y] == piece[x][y+1] && piece [x][y] == piece[x][y+2])
return 1;
if(piece[x][y] == piece[x-1][y-1] && piece[x][y] == piece[x-2][y-2] && piece[x][y] == piece[x+1][y+1] && piece [x][y] == piece[x+2][y+2])
return 1;
if(piece[x][y] == piece[x-1][y+1] && piece[x][y] == piece[x-2][y+2] && piece[x][y] == piece[x+1][y-1] && piece [x][y] == piece[x+2][y-2])
return 1;
return 0;
}
int check_over()//判断是否结束
{
for(int i = 0; i < 15; i++)
{
if(piece[i][j] = 0)
continue;
if(check_five_piece(i, j) == 1)
return 1;
}
return 0;
}
int main()
{
initgraph(480, 480);
loadimage(&bgp, _T("background.jpg"));
settextcolor(WHITE);
settextstyle(42, 20, _T("楷书"));
setbkmode(TRANSPARENT);
put_background();
draw_line();
draw_point();
MOUSEMSG m;
while(1)
{
m=GetMouseMsg();
if(m.uMsg==WM_LBUTTONDOWN)
{
draw_piece(m.x,m.y);
}
if (check_over() == 1)//结束时弹出
{
outtextxy(180, 220, _T("游戏结束"));
system("pause");
return 0;
}
}
return 0;
}
倒数第七行