//Davide Granata
#include<conio.h>
#include<iostream.h>
#include<dos.h>
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
void main()
{
textbackground(LIGHTGRAY);
clrscr();
randomize();
int x=2,y=2,vx[99],vy[99],lun=1,i,bx,by,inizio=0,cibox,ciboy,genera=1,ok=0, p=0,punti=0;
char c=' ',dir='r';
gotoxy(1,22);
for(i=0;i<80;i++)cout<<"-";
for(i=0;i<lun;i++,x++){vx[i]=x;vy[i]=y;}
for(i=0;i<lun;i++){
gotoxy(vx[i],vy[i]);
textcolor(6);
//textbackground(5);
cprintf("*");}
while(c!=13&&p==0){
//Se serve genero il cibo
if(genera==1){
do{
ok=1;
cibox=random(79)+1;
ciboy=random(21)+1;
for(i=0;i<lun-1;i++){
if(vx[i]==cibox&&vy[i]==ciboy)ok=0;
}
}while(ok!=1);
//Ora lo disegno
gotoxy(cibox,ciboy);
textcolor(LIGHTBLUE);
cprintf("0");
genera=0;
}
x=vx[lun-1];
y=vy[lun-1];
if(kbhit()){
c=getch();
if(c==75&&dir!='r'){x--;dir='l';}
else if(c==77&&dir!='l'){x++;dir='r';}
else if(c==72&&dir!='d'){y--;dir='u';}
else if(c==80&&dir!='u'){y++;dir='d';}
else if(c==13)goto fine;
else goto chiedi;
inizio=1;
}
else{if(dir=='r')x++;
if(dir=='l')x--;
if(dir=='u')y--;
if(dir=='d')y++;
}
if(inizio!=0){
bx=vx[0];
by=vy[0];
for(i=0;i<lun-1;i++){
vx[i]=vx[i+1];
vy[i]=vy[i+1];
}
vx[lun-1]=x;
vy[lun-1]=y;
gotoxy(bx,by);
cout<<" ";
gotoxy(vx[lun-1],vy[lun-1]);
textcolor(6);
cprintf("*");
//textcolor(3);
//textbackground(5);
//cprintf(" ");
chiedi:
}
//Controllo se becco il cibo
if(vx[lun-1]==cibox&&vy[lun-1]==ciboy){genera=1;punti=punti+2;lun++;
//Sposto tutti di un posto
for(i=lun-1;i>0;i--){vx[i]=vx[i-1];vy[i]=vy[i-1];}
vx[0]=vx[1]-1;
vy[0]=vy[1]-1;
};
//Controllo se il serpente tocca un muro
if(x<1||x>79||y<1||y>21)p=1;
//Ora controllo si mangia se stesso
for(i=0;i<lun-2;i++)
{
if(vx[lun-1]==vx[i]&&vy[lun-1]==vy[i])p=1;
}
//Stampo punti
textcolor(0);
gotoxy(1,24);
cprintf(" ");
gotoxy(1,24);
cprintf("Hai fatto ,%d punti",punti);
delay(200);
}
gotoxy(40,11);cout<<"Hai perso . Premi un tasto per uscire";
getch();
fine:
}