#include<graphics.h>
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
int v[12][12],w[12][12],z[12][12],x,y,gasit,gasit1,gasit2,i,j,k;
char a;
void copiere()
{int i,j;
for(i=1;i<=10;i++)
for(j=1;j<=10;j++)
z[i][j]=v[i][j];
}
void bordare()
{int i;
for(i=0;i<=11;i++)
{v[0][i]=1;w[0][i]=1;}
for(i=0;i<=11;i++)
{v[i][0]=1;w[i][0]=1;}
for(i=0;i<=11;i++)
{v[11][i]=1;w[11][i]=1;}
for(i=0;i<=11;i++)
{v[i][11]=1;w[i][11]=1;}
}
void completare(int t)
{int a=0,b=0,gasit=0,x;
if(t<=5)
{while(v[a][b])
{a=random(10)+1;b=random(10)+1;}
v[a][b]=1;
while(!gasit)
{x=random(4);
if(x==0)
{if(!v[a-1][b])
{v[a-1][b]=1;gasit=1;}
}
else
if(x==1)
{if(!v[a][b+1])
{v[a][b+1]=1;gasit=1;}
}
else
if(x==2)
{if(!v[a+1][b])
{v[a+1][b]=1;gasit=1;}
}
else
if(!v[a][b-1])
{v[a][b-1]=1;gasit=1;}
}
t++;
completare(t);
}
}
int introd(int a,int b)
{ char t;
cin>>t;
if(t=='l'||t=='L') {w[a][b]=1;return 1;}
if(t=='m'||t=='M') {w[a][b]=1;return 2;}
w[a][b]=2;
return 0;
}
int intr()
{char a[3],b[3]; x=0;y=0;
cout<<'\n'<<"x=";cin>>a;
cout<<"y=";cin>>b;
if(strlen(a)==2&&a[0]=='1'&&a[1]=='0') x=10;
if(strlen(b)==2&&b[0]=='1'&&b[1]=='0') y=10;
if(strlen(a)==1&&a[0]>='1'&&a[0]<='9') x=a[0]-'0';
if(strlen(b)==1&&b[0]>='1'&&b[0]<='9') y=b[0]-'0';
k=0;
while(x<1||x>10||y<1||y>10)
{
cout<<"Coordonate gresite!\nMai incearca o data..."<<'\n';
char a[3],b[3]; x=0;y=0;
cout<<'\n'<<"x=";cin>>a;
cout<<"y=";cin>>b;
if(strlen(a)==2&&a[0]=='1'&&a[1]=='0') x=10;
if(strlen(b)==2&&b[0]=='1'&&b[1]=='0') y=10;
if(strlen(a)==1&&a[0]>='1'&&a[0]<='9') x=a[0]-'0';
if(strlen(b)==1&&b[0]>='1'&&b[0]<='9') y=b[0]-'0';
}
if(v[x][y]==1)
{v[x][y]=2;
for(i=1;i<=10;i++)
for(j=1;j<=10;j++)
if(v[i][j]==1)
k++;
if(k==0)
{cout<<"lovit mortal"<<'\n';return 1;}
else
cout<<"lovit"<<'\n';
}
else
cout<<"ratat"<<'\n';
return 0;
}
void coord(int a,int b)
{cout<<'('<<a<<','<<b<<')'<<" - lovit sau ratat?"<<'\n';}
int verificare(int a,int b)
{ int k=0,i,j;char t;
for(i=1;i<=10;i++)
for(j=1;j<=10;j++)
if(w[i][j]==1) k++;
if(k==10) return 1;
cout<<"Jocul nu s-a terminat inca. Vrei sa renunti? \n(Daca da apasa tasta 'd', daca nu apasa tasta 'n')";
cin>>t;
if(t!='d'&&t!='D'&&t!='n'&&t!='N') {cout<<"Tasteaza cu atentie! Daca renunti apasa tasta 'd', daca nu apasa tasta 'n'";cin>>t;}
if(t=='d'||t=='D') return 1;
cout<<"Ok! Precizeaza, te rog, inca o data daca ("<<a<<','<<b<<") este lovit sau ratat";
cin>>t;
if(t!='l'&&t!='L'&&t!='r'&&t!='R') {cout<<" Repeta precizarea cu atentie (lovire - 'l', ratare - 'r')"<<'\n';cin>>t;}
if(t=='r'||t=='R') w[a][b]=2;
return 0;
}
int verif()
{ int i,j,k=0;
for(i=1;i<=10;i++)
for(j=1;j<=10;j++)
if(w[i][j]==1) k++;
if(k==10) return 1;
return 0;
}
int proced(int a,int b)
{ int g,v;
g=intr();if(g) return 1;
coord(a,b);g=introd(a,b);
if(g==1) {if(verif()) return 2; else return 0;}
if(g==2) {v=verificare(a,b);if(v) return 2;}
return 3;
}
int lovire(int a,int b)
{ int x,v;
gasit=0;
while(!gasit)
{x=random(4);
if(x==0) if(!w[a-1][b]) {v=proced(a-1,b);if(v!=3) return v;}
if(x==1) if(!w[a][b+1]) {v=proced(a,b+1);if(v!=3) return v;}
if(x==2) if(!w[a+1][b]) {v=proced(a+1,b);if(v!=3) return v;}
if(x==3) if(!w[a][b-1]) {v=proced(a,b-1);if(v!=3) return v;}
}
}
void main()
{int t;
randomize();
clrscr();
cout<<"Pentru 'lovire' foloseste simbolul 'l' sau 'L';"<<'\n'<<"Pentru 'ratare' foloseste simbolul 'r' sau 'R'"<<'\n'<<"Pentru 'lovire mortala' foloseste simbolul 'm' sau 'M'";
cout<<"\n\nCompletarea careului cu cele cinci avioane se face prin marcarea a doua \n'patratele' alaturate (pe orizontala sau pe verticala) pentru fiecare avion."<<'\n'<<'\n';
cout<<"\n\n MULT SUCCES!!!\n\n";
bordare();
completare(1);
copiere();
while(!gasit1&&!gasit2)
{if(intr()) gasit1=1;
x=random(10)+1;
y=random(10)+1;
while(w[x][y])
{x=random(10)+1;
y=random(10)+1;
}
cout<<'\n'<<'('<<x<<','<<y<<')'<<" - lovit sau ratat?"<<'\n';
cin>>a;
if(a=='l'||a=='L')
{w[x][y]=1;t=lovire(x,y);
if(t==1) gasit1=1;
if(t==2) gasit2=2;
}
else
if(a=='m'||a=='M')
{w[x][y]=1;t=verificare(x,y);if(t) gasit2=1;}
else
w[x][y]=2;
}
if(gasit1)
cout<<'\n'<<'\n'<<" AI CASTIGAT"<<'\n';
else
cout<<'\n'<<'\n'<<" AI PIERDUT"<<'\n';
int d=20;
clrscr();
x=30;
y+=10;
int gd=DETECT,gm;
initgraph(&gd,&gm,"d:\\borlandc\\bgi");
outtextxy(1,0,"Amplasarea initiala a avioanelor mele!");
setcolor(YELLOW);
for(i=0;i<=10;i++)
{line(x+i*d,y,x+i*d,y+10*d);
line(x,y+i*d,x+10*d,y+i*d);
}
setcolor(BLUE);
for(i=1;i<=10;i++)
for(j=1;j<=10;j++)
if(z[i][j]==1)
floodfill(x+j*d-1,y+i*d-1,YELLOW);
setcolor(WHITE);
getch();
outtextxy(1,240,"Configuratia finala a careului tau!");
setcolor(YELLOW);
y+=240;
for(i=0;i<=10;i++)
{line(x+i*d,y,x+i*d,y+10*d);
line(x,y+i*d,x+10*d,y+i*d);
}
setcolor(BLUE);
for(i=1;i<=10;i++)
for(j=1;j<=10;j++)
if(w[i][j]==1)
floodfill(x+j*d-1,y+i*d-1,YELLOW);
setcolor(RED);
settextstyle(1, HORIZ_DIR, 2);
for(i=1;i<=10;i++)
for(j=1;j<=10;j++)
if(w[i][j]==2)
outtextxy(x+j*d-16,y+i*d-23,"X");
/*for(int i=1;i<=10;i++)
{for(int j=1;j<=10;j++)
cout<<v[i][j]<<' ';
cout<<'\n';
}
cout<<'\n';
for(i=1;i<=10;i++)
{for(j=1;j<=10;j++)
cout<<w[i][j]<<' ';
cout<<'\n';
}*/
getch();
cleardevice();
clrscr();
settextstyle(1, HORIZ_DIR, 2);
outtextxy(80,230,"Mi-a facut placere sa joc cu tine! La revedere!");
getch();
}