C:\John\mines.cpp(5) :fatal error C1083: Cannot open include file: 'graphics.h': No such file or directory


from this code

#include<conio.h>
#include<stdio.h>
#include <graphics.h>
#include<stdlib.h>
#include<dos.h>
#include<time.h>
#include "events.h"
#define YES -1
#define NO 0
#define MARK 1
#define DOUBT 2

int boxleft=225,minemarked=0,explode = NO,totalmine = 25;
void minegenerate(int num,int x, int y);
void reinitialise();
int open_z(int x, int y);
int checkopen();
int checkcount(int x,int y);
void showwin()
{setcolor(YELLOW);outtextxy(250,140,"COOL U WIN !!!");
 explode = YES;// to freeze opening
}
void showdead();

void showcount()
{
char temp[4];
setfillstyle(1,BLACK);
floodfill(305,105,BLUE);
itoa(totalmine-minemarked,temp,10);
setcolor(RED);
outtextxy(305,105,temp);
/*
rectangle(550,100,600,130);
floodfill(555,105,RED);
itoa(boxleft,temp,10);
setcolor(BLUE);
outtextxy(555,105,temp);
*/
}

//void openbox(mine here);

class mine : public CmdBtn
{

public:
 friend  void openbox(int a, int b);
// friend void reinitialise();
 int xpos,ypos;
 int ismine;
 int isopen;
 mine(void);
 mine(int _left,int _top,int _right,int _bottom,char far* _Caption="",int FC = TXT_CLR,int BC = BTN_FACE,int Flags = ABS_COORDS);
 ~mine();

void OnMouseDown(int Button,int x,int y,int shift);
void OnMouseUp(int Button,int x,int y,int shift);
void virtual MsgProcessor(UINT msg,int info1,int info2,int info3,int info4);

};

mine::mine(void)
{
SetData(0,0,0,0);
Fout=MSdown=0;
isopen = NO;
AddElement(this);
}

mine::mine(int _left,int _top,int _right,int _bottom,char far* _Caption,int FC,int BC,int Flags)
{
SetData(_left,_top,_right,_bottom,_Caption,FC,BC,Flags);
Fout = MSdown=0;
isopen = NO;
AddElement(this);

}

mine::~mine()
 {
 RemoveElement(this);
 }

void mine::OnMouseDown(int Button,int x,int y,int shift)
{
MSdown=1;
//printf("y");
if(explode == NO)
{
switch(Button)
{

	case LT_BTN:

	if( isopen == YES)//equ to double click winmine
	{
	if( ismine == checkcount(xpos,ypos) )
	{open_z(xpos, ypos) ;
	if(explode == YES) {showdead(); }
	}
	break;
	}

	if( isopen == NO )
	{
	Draw3D(_3D_INSET);
	isopen = YES;
	boxleft--;
	//printf(".");
	break;
	}

	break;

	case RT_BTN:

	 if(isopen == DOUBT)
	 {
	 isopen = NO;
	 minemarked--;
	 showcount();
	 break;
	 }
	 if(isopen == NO)
	 { minemarked++;
	   showcount();
	   isopen = MARK;
	  break;
	  }
	if(isopen == MARK )
	{
	isopen = DOUBT;
	break;
	}
   }//end of switch case
 }// end of if
}

void mine::OnMouseUp(int Button,int x,int y,int shift)
{
 if(MSdown == 1 && explode == NO)
  {
//	printf("x");
	MSdown = 0;
	if(boxleft == totalmine) { showwin(); }
    switch(Button)
    {
	case LT_BTN:
	if (isopen == YES) ; else break;
	if(ismine != YES)
	{itoa(ismine,Caption,10);
	BackColor = GREEN;
	Draw3D(_2D_FLAT);
	}
	if(ismine == 0 )
		{//open_z(xpos,ypos);
		while(1)
		 {
		  if(checkopen() == 0) break;
		  }
		 }
	if(ismine == YES)
	{
	showdead();
	break;
	}
	break;

	case RT_BTN:

	if( isopen == NO)
	{
	BackColor = BLUE;
	*Caption = '\0';
	Draw3D(_3D_RAISED);
	break;
	}
	if( isopen == MARK)
	{
	strcpy(Caption,"*");
	BackColor = RED;
	Draw3D(_3D_RAISED);
	break;
	}
	if( isopen == DOUBT)
	{
	strcpy(Caption,"?");
	BackColor = RED;
	Draw3D(_3D_RAISED);
	break;
	}
    } //end of switch case
  }
}

void mine::MsgProcessor(UINT msg,int info1,int info2,int info3,int info4)
{
 int vRet = 1;
 if(ptrSpecificMsg != 0)
 vRet = (*ptrSpecificMsg)(msg,info1,info2,info3,info4);
 if(vRet)
 {
 switch(msg)
 {
// case KM_KEYPRESS: OnKeyPress(info1,info2,info3);break;

 case MM_MSDOWN : OnMouseDown(info1,info2,info3,info4);break;

// case MM_MSMOVE : OnMouseMove(info1,info2,info3,info4);break;

 case MM_MSUP: OnMouseUp(info1,info2,info3,info4);break;

// case SM_FOUT : OnFocusOut(info1);break;

// case SM_FIN : OnFocusIn(info1);break;

 }
 }
 return;
}


mine square[15][15];
//mine* mnptr;


CmdBtn btnExit(500,55,35,15,"EXIT",RED,BTN_FACE,REL_COORDS);
int OnbtnExit(UINT msg,int info1,int info2,int info3,int info4);

CmdBtn btnRefresh(360,55,85,15,"NEW GAME",RED,BTN_FACE,REL_COORDS);
int OnbtnRefresh(UINT msg,int info1,int info2,int info3,int info4);

CmdBtn nup,ndown;

int Onnup(UINT msg,int info1,int info2,int info3,int info4);
int Onndown(UINT msg,int info1,int info2,int info3,int info4);

void Initialise();
void DrawElements();
void InitApp();

void main()
{
Initialise();
InitApp();
DrawElements();
showmsptr();
//mnptr = square;
minegenerate(totalmine,15,15);
showcount();
BeginEvents();
closegraph();
}

void Initialise()
{
int gd=0,gm;
initgraph(&gd,&gm,"f:\\tc-300\\bgi");
settextstyle(3, HORIZ_DIR,3);
setcolor(YELLOW);
outtextxy(200,20,"SUBS  MINESWEEPER");
settextstyle(0,HORIZ_DIR,0);
setcolor(RED);
outtextxy(200,105,"MINE LEFT");
setcolor(BLUE);
rectangle(300,100,325,125);
setcolor(LIGHTGRAY);
rectangle(120,130,475,470);   //canvas
initmouse();
showmsptr();
//delay(1000);
hidemsptr();
}

void InitApp()
{
int i,j;
for(i=0;i<15;i++)
{
for(j=0;j<15;j++)
 {
  square[i][j].SetData(150+20*j,150+20*i,150+20*(j+1)-2,150+20*(i+1)-2,"",YELLOW,BLUE);
  square[i][j].ismine = 0;
  square[i][j].xpos = i;
  square[i][j].ypos = j;
    }
  }
  btnExit.setMsgProcessor(&OnbtnExit);
  btnRefresh.setMsgProcessor(&OnbtnRefresh);

setcolor(GREEN);
outtextxy(150,70,"SELECT TOTAL MINE");
nup.SetData(300,60,20,12,"/\\",4,7,REL_COORDS);
nup.Draw3D(_3D_RAISED);
nup.setMsgProcessor(&Onnup);

ndown.SetData(300,76,20,12,"\\/",4,7,REL_COORDS);
ndown.Draw3D(_3D_RAISED);
ndown.setMsgProcessor(&Onndown);

}

void DrawElements()
{
int i,j;
hidemsptr();
for(i=0;i<15;i++)
{
for(j=0;j<15;j++)
{
square[i][j].Draw3D(_3D_RAISED);
}
}
btnExit.Draw3D(_3D_RAISED);
btnRefresh.Draw3D(_3D_RAISED);
showmsptr();
}

int OnbtnExit(UINT msg,int info1,int info2,int info3,int info4)
{
switch(msg)
{
case KM_KEYPRESS:
if(info1==' ')DO_MSG_DESPATCHING = 0;
break;
case MM_MSUP: DO_MSG_DESPATCHING = 0;
break;
}
return DODEF;
}

int OnbtnRefresh(UINT msg,int info1,int info2,int info3,int info4)
{
switch(msg)
{
case MM_MSUP: reinitialise();
}
return DODEF;
}


int Onnup(UINT msg,int info1,int info2,int info3,int info4)
{
switch(msg)
{
case MM_MSUP:
	 hidemsptr();
	 if(totalmine < 80)
	 {
	 totalmine++;
	 reinitialise();
	 }
	 showmsptr();
	 return DODEF;
}
}

int Onndown(UINT msg,int info1,int info2,int info3,int info4)
{
switch(msg)
{
case MM_MSUP:
	 hidemsptr();
	 if(totalmine>10)
	 {
	 totalmine--;
	 reinitialise();
		  }
	 showmsptr();

return DODEF;
}
}


void minegenerate(int num,int x, int y)
{
int i,j,k,l;
randomize();
for(i=0;i<num;)
{
// randomize();
 j = rand() % (x*y);
// printf(" %d ",j);
 k =  j / x;
 l = j % x;
 if( square[k][l].ismine == NO )
 {   square[k][l].ismine = YES;
   i++;
   }
}

// number assign
int count;
for(i=0;i<x;i++)
for(j=0;j<y;j++)
{
	count = 0;
	if(square[i][j].ismine != YES)//assign number
	{
	if(i != 0 && square[i-1][j].ismine ==YES) count++;
	if(i != x-1 && square[i+1][j].ismine == YES) count++;
	if(j != 0 && square[i][j-1].ismine == YES) count++;
	if(j != y-1 && square[i][j+1].ismine == YES) count++;

	if(i != 0 && j != 0 && square[i-1][j-1].ismine ==YES) count++;
	if(i != x-1 && j != y-1 && square[i+1][j+1].ismine == YES) count++;
	if(i != x-1 && j != 0 && square[i+1][j-1].ismine == YES) count++;
	if(i != 0 && j != y-1 && square[i-1][j+1].ismine == YES) count++;

	square[i][j].ismine = count;
	}
   }

}

int checkcount( int i,int j)
{
int count = 0;

if(i != 0 && square[i-1][j].isopen == MARK) count++;
if(i != 14 && square[i+1][j].isopen == MARK) count++;
if(j != 0 && square[i][j-1].isopen == MARK) count++;
if(j != 14 && square[i][j+1].isopen == MARK) count++;

if(i != 0 && j != 0 && square[i-1][j-1].isopen == MARK) count++;
if(i != 14 && j != 14 && square[i+1][j+1].isopen == MARK) count++;
if(i != 14 && j != 0 && square[i+1][j-1].isopen == MARK) count++;
if(i != 0 && j != 14 && square[i-1][j+1].isopen == MARK) count++;
return(count);
}

int open_z(int i, int j)
{

//int i,j,k,l;
int opened = 0;
	if(i != 0 && square[i-1][j].isopen == NO)
       {
	openbox(i-1,j); opened++;
       //	if(square[i-1][j].ismine == 0) open_z(i-1,j);
	}

	if(i != 14 && square[i+1][j].isopen == NO)
	{
	openbox(i+1,j);opened++;
	//if(square[i+1][j].ismine == 0) open_z(i+1,j);
	}

	if(j != 0 && square[i][j-1].isopen == NO)
	{
	openbox(i,j-1);opened++;
	//if(square[i][j-1].ismine == 0) open_z(i,j-1);
	}

	if(j != 14 &&  square[i][j+1].isopen == NO)
	{
	openbox(i,j+1);opened++;
	//if(square[i][j+1].ismine == 0) open_z(i,j+1);
	}

	if(i != 0 && j != 0  && square[i-1][j-1].isopen == NO)
	{
	openbox(i-1,j-1);opened++;
	//if(square[i-1][j-1].ismine == 0) open_z(i-1,j-1);
	}

	if(i != 14 && j != 0 &&  square[i+1][j-1].isopen == NO)
	{
	openbox(i+1,j-1);opened++;
	//if(square[i+1][j+1].ismine == 0) open_z(i+1,j+1);
	}

	if(i != 0 && j != 14  && square[i-1][j+1].isopen == NO)
	{
	 openbox(i-1,j+1);opened++;
	 //if(square[i+1][j-1].ismine == 0) open_z(i+1,j-1);
	 }

	if(j != 14 && i != 14 &&  square[i+1][j+1].isopen == NO)
	{openbox(i+1,j+1);opened++;
	//if(square[i+1][j-1].ismine == 0) open_z(i+1,j-1);
	}

 return opened;
}

int checkopen()
{
int noofopenup=0;
int i,j;
for(i=0;i<15;i++)
for(j=0;j<15;j++)
{
if(square[i][j].isopen == YES && square[i][j].ismine == 0)
noofopenup += open_z(i,j);
}
return noofopenup;
}


void openbox(int a, int b)
{
if(square[a][b].ismine == YES)
{strcpy(square[a][b].Caption,"*");
 square[a][b].BackColor = RED;
 explode = YES;
 }
else
{itoa(square[a][b].ismine,square[a][b].Caption,10);
square[a][b].BackColor = GREEN;}
square[a][b].isopen = YES;
boxleft--;
//printf(".");
hidemsptr();
square[a][b].Draw3D(_2D_FLAT);
showmsptr();
}

void showdead()
{
int i,j;
for(i=0;i<15;i++)
for(j=0;j<15;j++)
openbox(i,j);
outtextxy(250,140,"OOPS UR DEAD");
//getch();
//reinitialise();
}

void reinitialise()
{
int i,j;
hidemsptr();
setfillstyle(1,BLACK);
floodfill(130,135,LIGHTGRAY);
//setcolor(BLACK);
//bar(121,131,474,469);   //canvas
//getch();
for(i=0;i<15;i++)
for(j=0;j<15;j++)
{
  square[i][j].SetData(150+20*j,150+20*i,150+20*(j+1)-2,150+20*(i+1)-2,"",YELLOW,BLUE);
  //square[i][j].Caption = '\0';
  square[i][j].ismine = 0;
  square[i][j].isopen = NO;
  square[i][j].xpos = i;
  square[i][j].ypos = j;
  square[i][j].Draw3D(_3D_RAISED);
//  square[i][j].Fout=square[i][j].MSdown=0;
 }
explode = NO;
minemarked = 0;
boxleft = 225;
minegenerate(totalmine,15,15);
//DrawElements();
showcount();
showmsptr();

}
This article has been dead for over six months. Start a new discussion instead.