#include
#include
#include
#include
#include
#include
#include
#include
#include
int far *buffer, *temp;
unsigned int sz;
FILE *fp;
FILE *fp1;
void v_frente(int x,int y)
{
buffer=farmalloc(sz*6);
fp=fopen("batmaof1.ped","rb");
fread((int far *)buffer,sz*6,1,fp);
buffer=buffer+(sz/2);
putimage(x,y+2,(int far *)buffer,COPY_PUT);
fclose(fp);
farfree(buffer);
}
void v_direito(int x,int y)
{
buffer=farmalloc(sz*6);
fp=fopen("batmaof1.ped","rb");
fread((int far *)buffer,sz*6,1,fp);
buffer=buffer+(2*(sz/2));
putimage(x,y,(int far *)buffer,COPY_PUT);
fclose(fp);
farfree(buffer);
}
void v_esquerdo(int x,int y)
{
buffer=farmalloc(sz*6);
fp=fopen("batmaof1.ped","rb");
fread((int far *)buffer,sz*6,1,fp);
buffer=buffer+(3*(sz/2));
putimage(x,y,(int far *)buffer,COPY_PUT);
fclose(fp);
farfree(buffer);
}
void M_ensonado(int x,int y)
{
buffer=farmalloc(sz*6);
fp=fopen("batmaof1.ped","rb");
fread((int far *)buffer,sz*6,1,fp);
buffer=buffer+(4*(sz/2));
putimage(x,y+3,(int far *)buffer,COPY_PUT);
fclose(fp);
farfree(buffer);
}
void m_ensonado(int x,int y)
{
buffer=farmalloc(sz*6);
fp=fopen("batmaof1.ped","rb");
fread((int far *)buffer,sz*6,1,fp);
buffer=buffer+(5*(sz/2));
putimage(x,y+3,(int far *)buffer,COPY_PUT);
fclose(fp);
farfree(buffer);
}
void v_intermedio_direito1(int x,int y)
{
buffer=farmalloc(sz*6);
fp1=fopen("batmaof2.ped","rb");
fread((int far *)buffer,sz*6,1,fp);
buffer=buffer+(sz/2);
putimage(x,y+3,(int far *)buffer,COPY_PUT);
fclose(fp1);
farfree(buffer);
}
void v_intermedio_esquerdo1(int x,int y)
{
buffer=farmalloc(sz*6);
fp1=fopen("batmaof2.ped","rb");
fread((int far *)buffer,sz*6,1,fp);
buffer=buffer+(2*(sz/2));
putimage(x,y+3,(int far *)buffer,COPY_PUT);
fclose(fp1);
farfree(buffer);
}
void v_Intermedio_direito1(int x,int y)
{
buffer=farmalloc(sz*6);
fp1=fopen("batmaof2.ped","rb");
fread((int far *)buffer,sz*6,1,fp);
buffer=buffer+(3*(sz/2));
putimage(x,y+3,(int far *)buffer,COPY_PUT);
fclose(fp1);
farfree(buffer);
}
void v_Intermedio_esquerdo1(int x,int y)
{
buffer=farmalloc(sz*6);
fp1=fopen("batmaof2.ped","rb");
fread((int far *)buffer,sz*6,1,fp);
buffer=buffer+(4*(sz/2));
putimage(x,y+3,(int far *)buffer,COPY_PUT);
fclose(fp1);
farfree(buffer);
}
void pausa(void)
{
delay (5);
}
void main(void)
{
#define cima 18432
#define baixo 20480
#define esc 283
#define dir 19712
#define esq 19200
#define enter 7181
#define space 14624
#define csono 30
int gdriver = VGA, gmode = VGAHI,erro,key,x,y,keyant,sono;
initgraph(&gdriver,&gmode,"");
erro = graphresult();
randomize();
sz=imagesize(1,1,85,180);
if (erro != grOk) /* an error occurred */
{
printf("Erro gr fico: %s\n", grapherrormsg(erro));
printf("Qualquer tecla para continuar");
getch();
exit(1);
}
y=200;
x=100;
sono=0;
floodfill(1, 1, 17);
keyant=dir;
v_direito(x,y);
do
{
if (key)
{
bioskey(0);
gotoxy(22,10);
printf("ÛÛÛÛÛÛÛ");
}
key=bioskey(1);
sono++;
if ((sono>=csono) && (key==dir))
{
v_frente(x,y);
pausa();
v_intermedio_direito1(x,y);
pausa();
v_Intermedio_direito1(x,y);
pausa();
v_direito(x,y);
keyant=dir;
sono=0;
}
if ((sono>=csono) && (key==esq))
{
v_frente(x,y);
pausa();
v_intermedio_esquerdo1(x,y);
pausa();
v_Intermedio_esquerdo1(x,y);
pausa();
v_esquerdo(x,y);
keyant=dir;
sono=0;
}
if ((keyant!=esq) && (key==dir) && (sono > 0))
{
x=x+6;
v_direito(x,y);
keyant=key;
}
if ((keyant!=dir) && (key==esq) && (sono > 0))
{
x=x-6;
v_esquerdo(x,y);
keyant=key;
}
if ((keyant==esq) && (key==dir) && (sono > 0) )
{
v_Intermedio_esquerdo1(x,y);
pausa();
v_intermedio_esquerdo1(x,y);
pausa();
v_frente(x,y);
pausa();
v_intermedio_direito1(x,y);
pausa();
v_Intermedio_direito1(x,y);
pausa();
v_direito(x,y);
keyant=key;
}
if ((keyant==dir) && (key==esq) && (sono >0))
{
v_Intermedio_direito1(x,y);
pausa();
v_intermedio_direito1(x,y);
pausa();
v_frente(x,y);
pausa();
v_intermedio_esquerdo1(x,y);
pausa();
v_Intermedio_esquerdo1(x,y);
pausa();
v_esquerdo(x,y);
keyant=key;
}
if ((sono>=csono) && (keyant==esq))
{
if (sono==csono)
{
v_Intermedio_esquerdo1(x,y);
pausa();
v_intermedio_esquerdo1(x,y);
pausa();
v_frente(x,y);
pausa();
}
m_ensonado(x,y);
delay(random(100)+100);
M_ensonado(x,y);
delay(random(100)+100);
}
if ((sono>=csono) && (keyant==dir))
{
if (sono==csono)
{
v_Intermedio_direito1(x,y);
pausa();
v_intermedio_direito1(x,y);
pausa();
v_frente(x,y);
pausa();
}
m_ensonado(x,y);
delay(random(100)+100);
M_ensonado(x,y);
delay(random(100)+100);
}
gotoxy(22,10);
printf("%i",key);
delay(200);
}
while (key!=esc);
getch();
}