#include<iostream.h>
#include<graphics.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#include<dos.h>
#include<alloc.h>
int a,tub[7][8];
void initial()
{
setcolor(1);
rectangle(129,179,411,361);
for(int i=1;i<=6;i++)
for(int j=1;j<=7;j++)
{setcolor(1);
int x1=90+j*40,y1=150+i*30,x2=90+j*40+40,y2=150+i*30+30;
rectangle(x1,y1,x2,y2);x1++;y1++;x2--;y2--;rectangle(x1,y1,x2,y2);x1++;y1++;x2--;y2--;
setcolor(7);
while(y1<=y2)
{delay(25);rectangle(x1,y1,x2,y2);x1++;y1++;x2--;y2--;}
}
getch();
}
int verific()
{for(int i=1;i<=7;i++)
if(tub[1][i]==0)
return 1;
return 0;
}
int citire(char q[2])
{char x[11],p[222]="";int y;
cin>>x;
if(strlen(x)!=1)
{bar(1,1,640,100);
outtextxy(4,4,"valoarea introdusa nu este corecta, introduceti alta valoare ");return citire(q);}
else
{y=x[0]-'0';
if(y>7||y<1)
{bar(1,1,640,100);
outtextxy(4,4,"valoarea introdusa nu este corecta, introduceti alta valoare ");return citire(q);}
else
if(tub[1][y])
{bar(1,1,640,100);
strcat(p,"pe coloana ");strcat(p,q);strcat(p," nu se mai pot introduce piese, alegeti alta coloana");
outtextxy(4,4,p);return citire(q);}
else return y;
}
}
/* subprogramul citire citeste coloana si verifica daca valoarea introdusa e corecta
returneaza numarul coloanei in care vrea gamerul sa puna piesa
*/
int atrib(int y,int a)
{int ga=0;
if(a==1)
setcolor(4);
else
setcolor(8);
for(int i=6;i>=1&&!ga;i--)
if(tub[i][y]==0)
{tub[i][y]=a;ga=1;}
/*
!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!
*/
return i;
}
int verif(int x,int y)
{int i=x,s=0,j;
while(tub[i][y]==tub[x][y])
{s++;i++;}
if(s>=4)
return 1;
i=x;s=0;j=y;
while(tub[i][j]==tub[x][y])
{i--;j--;s++;}
i=x;j=y;
while(tub[i][j]==tub[x][y])
{i++;j++;s++;}
if(s>4)
return 1;
i=x;s=0;j=y;
while(tub[i][j]==tub[x][y])
{i--;j++;s++;}
i=x;j=y;
while(tub[i][j]==tub[x][y])
{i++;j--;s++;}
if(s>4)
return 1;
i=y;j=y;s=0;
while(tub[x][i]==tub[x][y])
{i--;s++;}
while(tub[x][j]==tub[x][y])
{j++;s++;}
if(s>4)
return 1;
return 0;
}
void joc_secund(int a)
{int y;
char q[2],p[222]="";
itoa(a,q,10);
if(verific())
{strcat(p,"jucatorul ");strcat(p,q);strcat(p," introduce numarul coloanei pe care vrea sa puna piesa ");
outtextxy(4,4,p);y=citire(q);}
int x=atrib(y,a);// in matrice se pune a(1 sau 2) pe coloana y; x- numarul coloanei
/*..........................
..
.................................
..................................
*/
if(verif(x,y)) // verific daca nu cumva s-a terminat jocul
{setfillstyle(SOLID_FILL,BLACK);
bar(0,0,640,100);
strcat(p,"jocul s-a terminat, a castigat jucatorul ");strcat(p,q);
outtextxy(4,4,p);}
else
{//getimage(0,0,kojo);
setfillstyle(SOLID_FILL,BLACK);bar(0,0,640,440);joc_secund(a%2+1);}
getch();
}
void main()
{a=(random(10000)/5000+1);
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "c:\\borlandc\\bgi");
clock_t start, end;
start = clock();
end = clock();
initial();
joc_secund(a);
}