#include<dos.h>
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
#include<alloc.h>

union REGS inregs,outregs;
struct SREGS segregs;


void initmouse()
{
	inregs.x.ax=0x0;
	int86x(0x33,&inregs,&outregs,&segregs);

}

void getxy(int *x,int *y)
{
inregs.x.ax=0x3;
int86x(0x33,&inregs,&outregs,&segregs);
*x=outregs.x.cx;
*y=outregs.x.dx;

}

void main()

{


 int gdriver = DETECT, gmode, errorcode;
	int closeflag,x=5,y=20,h,j,adilhada=0;
	initgraph(&gdriver,&gmode,"c:\\tc\\bgi");
	if(graphresult())
	{
		printf("\n Couldn't initialise graphics.... we tried our level best\n");
		exit(1);
	}
	initmouse();

	inregs.x.ax=0x1;
	int86x(0x33,&inregs,&outregs,&segregs);
	setbkcolor(7);
 setfillstyle(SOLID_FILL,9);
	bar3d(20,50,50,70,0,0);

	while(1)
	{

		getxy(&x,&y);

		if( x>20 && x<50 && y>50 && y<70)
		{
		if(adilhada!=1)
		{
		inregs.x.ax=0x2;
		int86x(0x33,&inregs,&outregs,&segregs);

		setfillstyle(SOLID_FILL,12);bar3d(20,50,50,70,0,0);
		setcolor(0);


		  line(20,70,50,70);
		    line(20,50,20,70);
			      ;


			inregs.x.ax=0x1;
			int86x(0x33,&inregs,&outregs,&segregs);
			adilhada=1;}

		}
		else
		{       adilhada=0;
			setcolor(4);
			setfillstyle(SOLID_FILL,4);
				bar3d(20,50,50,70,0,0);
			      line(20,70,50,70);




		 }



} }