#include <graphics.h>
#include <conio.h>
#include<bits/stdc++.h>
bool xx[700][480]={0};
int yy[700][480]={0};
int e=0;
int x=0,y=0;
bool win(int x,int y){
int l=yy[x][y];
if(yy[x][y-20]==l&&yy[x][y-40]==l&&yy[x][y-60]==l&&yy[x][y-80]==l){
e=1;
}else if(yy[x][y-20]==l&&yy[x][y-40]==l&&yy[x][y-60]==l&&yy[x][y+20]==l){
e=1;
}else if(yy[x][y-20]==l&&yy[x][y-40]==l&&yy[x][y+20]==l&&yy[x][y+40]==l){
e=1;
}else if(yy[x][y-20]==l&&yy[x][y+20]==l&&yy[x][y+40]==l&&yy[x][y+60]==l){
e=1;
}else if(yy[x][y+20]==l&&yy[x][y+40]==l&&yy[x][y+60]==l&&yy[x][y+80]==l){
e=1;
}else if(yy[x-20][y]==l&&yy[x-40][y]==l&&yy[x-60][y]==l&&yy[x-80][y]==l){
e=1;
}else if(yy[x-20][y]==l&&yy[x-40][y]==l&&yy[x-60][y]==l&&yy[x+20][y]==l){
e=1;
}else if(yy[x-20][y]==l&&yy[x-40][y]==l&&yy[x+40][y]==l&&yy[x+20][y]==l){
e=1;
}else if(yy[x-20][y]==l&&yy[x+60][y]==l&&yy[x+40][y]==l&&yy[x+20][y]==l){
e=1;
}else if(yy[x+80][y]==l&&yy[x+60][y]==l&&yy[x+40][y]==l&&yy[x+20][y]==l){
e=1;
}else if(yy[x+20][y-20]==l&&yy[x+40][y-40]==l&&yy[x+60][y-60]==l&&yy[x+80][y-80]==l){
e=1;
}else if(yy[x+20][y-20]==l&&yy[x+40][y-40]==l&&yy[x+60][y-60]==l&&yy[x-20][y+20]==l){
e=1;
}else if(yy[x+20][y-20]==l&&yy[x-60][y+60]==l&&yy[x-40][y+40]==l&&yy[x-20][y+20]==l){
e=1;
}else if(yy[x+20][y-20]==l&&yy[x-60][y+60]==l&&yy[x-40][y+40]==l&&yy[x-20][y+20]==l){
e=1;
}else if(yy[x-80][y+80]==l&&yy[x-60][y+60]==l&&yy[x-40][y+40]==l&&yy[x-20][y+20]==l){
e=1;
}else if(yy[x+20][y+20]==l&&yy[x+40][y+40]==l&&yy[x+60][y+60]==l&&yy[x+80][y+80]==l){
e=1;
}else if(yy[x+20][y+20]==l&&yy[x+40][y+40]==l&&yy[x+60][y+60]==l&&yy[x-20][y-20]==l){
e=1;
}else if(yy[x+20][y+20]==l&&yy[x+40][y+40]==l&&yy[x-40][y-40]==l&&yy[x-20][y-20]==l){
e=1;
}else if(yy[x+20][y+20]==l&&yy[x-60][y-60]==l&&yy[x-40][y-40]==l&&yy[x-20][y-20]==l){
e=1;
}else if(yy[x-80][y-80]==l&&yy[x-60][y-60]==l&&yy[x-40][y-40]==l&&yy[x-20][y-20]==l){
e=1;
}
}
void f(){
if(x%20<10){
x=x-x%20;
}else{
x=x+20-x%20;
}
if(y%20<10){
y=y-y%20;
}else{
y=y+20-y%20;
}
}
int main(){
srand(time(0));
initgraph(700,480);
setbkcolor(GREEN);
cleardevice();
for(int j=20;j<=480;j+=20){
line(0,j,700,j);
}
for(int j=20;j<=700;j+=20){
line(j,0,j,480);
}
ExMessage a;
while(1){
a=getmessage();
if(a.message==WM_LBUTTONDOWN){
x=a.x,y=a.y;
f();
if(xx[x][y]==0){
xx[x][y]=1;
setfillcolor(BLACK);
yy[x][y]=1;
solidcircle(x,y,8);
win(x,y);
if(e==1){
outtextxy(340,240,"black win");
_getch();
closegraph();
}
do{
x=rand()%700,y=rand()%480;
f();
}while(xx[x][y]==1);
xx[x][y]=1;
setfillcolor(WHITE);
yy[x][y]=2;
solidcircle(x,y,8);
win(x,y);
if(e==1){
outtextxy(340,240,"white win");
_getch();
closegraph();
}
}
}
}
_getch();
closegraph();
return 0;
}