#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include<BIOS.H >
void copy(int s1, int s2, int z1 ,int z2 ,int x,int y);
 unsigned char read_point(int x,int y ) ;
unsigned char mempoint(int x,int y ,int color);
int main(void)
{
   union k{
    char c[2];
    int i,j;
    }key;
   char p[2]={40,80},ch;
   int array[9][9];
   int i,j;
   int a,b,x,y;
   int gdriver = DETECT, gmode, errorcode;
   int xmax, ymax;
   initgraph(&gdriver, &gmode, "");
   errorcode = graphresult();
   setcolor(2);
   settextstyle(1,0,2);
   outtextxy(25,420," F1..       F2..       A..       B..      ");
   setviewport(150,50,500,400,1);
   setfillpattern(p,7);
   setfillstyle(1,7);
   for(i=0;i<10 ;i++)
   for(j=0;j<10 ;j++)
  array[i][j]=0;
   floodfill(260,160,3);
   for(i=0;i<325 ;i+=35)
   for(j=0;j<325 ;j+=35)
         rectangle(j,i,35+j,35+i);
  setviewport(460,365,495,395,1);
     for(i=0;i<200;i++)
     for(j=0;j<200;j++)
     putpixel(10+j,5+i ,1);
  array[0][0]=-1;
  setviewport(145,50,180,80,1);
     for(i=0;i<200;i++)
     for(j=0;j<200;j++)
     putpixel(10+j,5+i ,4);
 array[9][9]=-1;
  a=0 ;b=0; x=0;y=0;
 do{
     ch=getch();
     key.i=bioskey(0);
      if(!key.c[0])
   switch (key.c[1])
    {
   case 72:
     if(ch=='a')
     if(b<=280){
     setviewport(460-a,365-b,495-a,395-b,1);
     for(i=0;i<200;i++)
     for(j=0;j<200;j++)
     putpixel(10+j,5+i ,57);
     if(getpixel(j+a,i+b)==7)
     b-=35;
     else b+=35;
     setviewport(460-a,365-b,495-a,395-b,1);
     for(i=0;i<200;i++)
     for(j=0;j<200;j++)
     putpixel(10+j,5+i ,1);   //}
          }
      if(ch=='b')
     if(y<= 280){
     setviewport(145-x,50-y,180-x,80-y,1);
        for(i=0;i<200;i++)
        for(j=0;j<200;j++)
        putpixel(10+j,5+i ,54);
     y+=35;
     setviewport(145-x,50-y,180-x,80-y,1);
     for(i=0;i<200;i++)
     for(j=0;j<200;j++)
     putpixel(10+j,5+i ,4);   }
     break;
  case 75:
      if(ch=='a')
      if(a<=280){
      setviewport(460-a,365-b,495-a,395-b,1);
      for(i=0;i<200;i++)
      for(j=0;j<200;j++)
      putpixel(10+j,5+i ,57);
      if(getpixel(j+a,i+b)==7)
      a-=35;
      else a+=35;
      setviewport(460-a,365-b,495-a,395-b,1);
      for(i=0;i<200;i++)
      for(j=0;j<200;j++)
      putpixel(10+j,5+i ,1);
          }
      if(ch=='b')
     if(x<= 280){
     setviewport(145-x,50-y,180-x,80-y,1);
        for(i=0;i<200;i++)
        for(j=0;j<200;j++)
        putpixel(10+j,5+i ,54);
     x+=35;
     setviewport(145-x,50-y,180-x,80-y,1);
     for(i=0;i<200;i++)
     for(j=0;j<200;j++)
     putpixel(10+j,5+i ,4);   }
      break;
  case 77:
      if(ch=='a')
      if(a>=35){
      setviewport(460-a,365-b,495-a,395-b,1);
      for(i=0;i<200;i++)
      for(j=0;j<200;j++)
      putpixel(10+j,5+i ,57);
      if(getpixel(j+a,i+b)==7)
      a+=35;
      else a-=35;
      setviewport(460-a,365-b,495-a,395-b,1);
      for(i=0;i<200;i++)
      for(j=0;j<200;j++)
      putpixel(10+j,5+i ,1);
          }
      if(ch=='b')
     if(x>= -280){
     setviewport(145-x,50-y,180-x,80-y,1);
        for(i=0;i<200;i++)
        for(j=0;j<200;j++)
        putpixel(10+j,5+i ,54);
     x-=35;
     setviewport(145-x,50-y,180-x,80-y,1);
     for(i=0;i<200;i++)
     for(j=0;j<200;j++)
     putpixel(10+j,5+i ,4);   }
      break;

   case 80:
   if(ch=='a')
   if(b>=35){
     setviewport(460-a,365-b,495-a,395-b,1);
     for(i=0;i<200;i++)
     for(j=0;j<200;j++)
     putpixel(10+j,5+i ,57);
     if(getpixel(j+a,i+b)==7)
     b+=35;
     else b-=35;
     setviewport(460-a,365-b,495-a,395-b,1);
     for(i=0;i<200;i++)
     for(j=0;j<200;j++)
     putpixel(10+j,5+i ,1);
          }
     /*********************************/
     if(ch=='b')
     if(y>= -280){
     setviewport(145-x,50-y,180-x,80-y,1);
        for(i=0;i<200;i++)
        for(j=0;j<200;j++)
        putpixel(10+j,5+i ,54);
     y-=35;
     setviewport(145-x,50-y,180-x,80-y,1);
     for(i=0;i<200;i++)
     for(j=0;j<200;j++)
     putpixel(10+j,5+i ,4);   }
     break;
    }
      } while(key.c[0]!='q');
   closegraph();
   return 0;
}