#include"graphics.h"
#include <conio.h>
#include "dos.h"
#include "conio.h"
#include "stdio.h"
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define UP 0x4800
#define Esc 0x11b
#define DOWN 0x5000
#define ENTER 0x1c0d
int a[20][20]={0},key;
void *rar;
void DrawQp();
void playtoplay() ;
void setplaycolor(int t);
int Qpchange(int x,int y);
int arrow();
int zi(int x,int y);
void playwin(int t);
void setplaycolor(int t);
int zi(int x,int y);
void main()
{
int gd=DETECT,gr;
registerbgidriver(EGAVGA_driver);
initgraph(&gd,&gr,"c:\\tc");
DrawQp();
playtoplay();
getch();
closegraph();
}
void DrawQp()
{
int i,j;
for(i=100;i<=400;i+=15)
{
line(100,i,400,i);
line(i,100,i,400);
}
setcolor(0);
setfillstyle(SOLID_FILL,15);
setfillstyle(SOLID_FILL,8);
}
void playtoplay()
{
int x,y,i,j,t=1;
x=100;y=100;
gotoxy(100,100) ;
arrow();
do
{
setplaycolor(t);
key=bioskey(0);
if(key==Esc)
break;
else
if(key==ENTER)
{
if(zi(x,y)==0)
{ i=(x-100)/15;j=(y-100)/15;
fillellipse(x,y,5,5);a[i][j]=t;
if(Qpchange(x,y))
{playwin(t);break;}
}
else continue;
if(t==1) {t=2;}
if(t==2) {t=1;}
continue;
}
else
if(key==LEFT)
{if(x>100) {gotoxy(x-15,y);arrow();putimage(x-15,y,rar,XOR_PUT);}
else continue;
}
else
if(key==RIGHT)
{if(x<400) {gotoxy(x+15,y);arrow();putimage(x+15,y,rar,XOR_PUT);}
else continue;
}
else
if(key==UP)
{if(y>100) {gotoxy(x,y-15);arrow();putimage(x,y-15,rar,XOR_PUT);}
else continue;
}
else
if(key==DOWN)
{if(x<400) {gotoxy(x,y+15);arrow();putimage(x,y+15,rar,XOR_PUT);}
else continue;
}
}while(1);
}
void setplaycolor(int t)
{
if(t%2==1)
setfillstyle(SOLID_FILL,15);
else
setfillstyle(SOLID_FILL,8);
}
int Qpchange(int x,int y)
{
int i,j,n,kk,bb;
i=(x-100)/15;
j=(y-100)/15;
kk=0;
bb=0;
if(i>=4)
{ for(n=0;n<=4;n++)
{
if(a[i-n][j]==1) {kk+=1;}
else if(a[i-n][j]==2) {bb+=1;}
}
if(kk==5||bb==5) return 1;
}
if(i<=15)
{ kk=0;bb=0;
for(n=0;n<=4;n++)
{
if(a[i+n][j]==1) { kk+=1;}
else if(a[i-n][j]==2) {bb+=1;}
}
if(kk==5||bb==5) return 1;
}
if(j>=4)
{ kk=0;bb=0;
for(n=0;n<=4;n++)
{
if(a[i][j-n]==1) { kk+=1;}
else if(a[i][j-n]==2) {bb+=1;}
}
if(kk==5||bb==5) return 1;
}
if(j<=15)
{ kk=0;bb=0;
for(n=0;n<=4;n++)
{
if(a[i][j+n]==1) { kk+=1;}
else if(a[i][j+n]==2) {bb+=1;}
}
if(kk==5||bb==5) return 1;
}
if(i>=4&&j>=4)
{ kk=0;bb=0;
for(n=0;n<=4;n++)
{
if(a[i-n][j-n]==1) {kk+=1;}
else if(a[i-n][j-n]==2) {bb+=1;}
}
if(kk==5||bb==4) return 1;
}
if(i<=15&&j<=15)
{ kk=0;bb=0;
for(n=0;n<=4;n++)
{
if(a[i+n][j+n]==1) {kk+=1;}
else if(a[i+n][j+n]==2) {bb+=1;}
}
if(kk==5||bb==4) return 1;
}
if(i>=4&&j<=15)
{ kk=0;bb=0;
for(n=0;n<=4;n++)
{
if(a[i-n][j+n]==1) {kk+=1;}
else if(a[i-n][j+n]==2) {bb+=1;}
}
if(kk==5||bb==4) return 1;
}
if(i<=15&&j>=4)
{ kk=0;bb=0;
for(n=0;n<=4;n++)
{
if(a[i+n][j-n]==1) {kk+=1;}
else if(a[i+n][j-n]==2) {bb+=1;}
}
if(kk==5||bb==4) return 1;
}
return 0;
}
int arrow()
{
int size;
int raw[]={4,4,4,8,6,8,14,16,16,16,8,6,8,4,4,4};
setfillstyle(SOLID_FILL,15);
fillpoly(8,raw);
size=imagesize(4,4,16,16);
rar=malloc(size);
getimage(4,4,16,16,rar);
putimage(4,4,rar,XOR_PUT);
return 0;
}
int zi(int x,int y)
{ int i,j;
i=(x-100)/15;
j=(y-100)/15;
if(a[i][j]==0)
return 0;
else return 1;
}
void playwin(int t)
{
settextstyle(0,0,4);
setcolor(12);
if(t==1)
outtextxy(20,20,"white win!");
else if(t==2)
outtextxy(20,20,"black win!");
else outtextxy(20,20,"ping ju");
}