Community Sites
Create your own community website and start earning today !
It's Free !
 
Communities Members BookmarksPolls Fresher Jobs Funny Photos B.Tech Projects New Member FAQ  



My Profile
Active Members
TodayLast 7 Days more...



Awards & Gifts
Online Exams

Fresher Jobs


Our fresher job section is exclusively for fresh graduates! Find jobs for freshers in major Indian cities including Bangalore, Chennai, Hyderabad, Pune or Kochi

Resources


Find educational articles, blogs, discussion threads and other resources.

Colleges


Find details about any college in India or search for courses.

website counter



Mine Sweeper Game in C


Posted Date: 12 Jun 2008    Resource Type: Articles/Knowledge Sharing    Category: Computer & Technology

Posted By: Lenin       Member Level: Diamond
Rating:     Points: 4



Mine Sweeper Game

#include
#include
#include
#include
#include
#include
#define MROW 8
#define MCOL 8
#define MINES 5
#define BSIZE 15
union REGS i,o;
//9 for mines
main()
{
int bm=DETECT,bg=DETECT,maxx,maxy,button,x,y,i,j,checkx,checky,nclick;
int arr[8][8],dot[MINES];
int count1,count2;
int row,col;
time_t t;
clrscr();
initgraph(&bm,&bg,"e:\tcc\bgi");
maxx=getmaxx();
maxy=getmaxy();
if(initmouse()==0)
{
closegraph();
restorecrtmode();
printf("MOUSE NOT FOUND");
exit(1);
}
while(!kbhit())
{
char loop='t';
setcolor(WHITE);
setviewport(0,0,getmaxx(),getmaxy(),1);
clearviewport();
showmouse();
//It Blanks the Array
for(i=0;i for(j=0;j arr[i][j]=0;
//put mines in random blocks
srand((unsigned) time(&t));
for(i=0;i {
dot[i]=rand()%64;
for(j=0;j if(dot[i]==dot[j])
break;
if(i!=j)
{
i--;
continue;
}
else
{
row=dot[i]/MROW;
col=dot[i]%MCOL;
arr[row][col]=9;
}
}
//put mines value in other blocks
for(row=0;row {
for(col=0;col {
if(arr[row][col]!=9) //No Mine
{
int i,num=0,temp,ecol,erow,startrow;
temp=col==0?col:col-1;
ecol=col!=MCOL-1?col+1:col;
startrow=row==0?row:row-1;
erow=row==MROW-1?row:row+1;
for(i=startrow;i<=erow;i++)
for(j=temp;j<=ecol;j++)
if(arr[i][j]==9)
num++;
arr[row][col]=num;
}
}
}

rectangle(0,0,maxx,maxy);
//sets view port to the play area only
setviewport(200,190,385,370,1);
nclick=0;
while(!kbhit()&&loop=='t')
{
int row=10,col=5;
setlinestyle(0,0,3);
rectangle(row-5,col-3,row*17,col*33); //Draws outer block
setlinestyle(0,0,2);
for(i=0;i {
for(j=0;j {
rectangle(row,col,row+BSIZE,col+BSIZE);
if(arr[i][j]!=9)
{
int temp[3];
if(arr[i][j]>=80)
outtextxy(row+4,col+4,"F");
else
if(arr[i][j]>=50)
{
itoa((arr[i][j]-50),temp,10);
outtextxy(row+BSIZE/2,col+BSIZE/2,temp);
}
}
row+=BSIZE+5;
}
row=10;
col+=BSIZE+5;
}
if(nclick==MROW*MCOL-MINES)
{
setviewport(0,0,getmaxx(),getmaxy(),1);
outtextxy(200,100,"CONGRATS! YOU WON THE GAME");
getch();
loop='f';
}
getpos(&button,&x,&y);

//puts F tag in Array
if(button&2)
{
int val,prex=x,prey=y;
x=210+(x-210)/20*20;
y=195+(y-195)/20*20;
val=arr[(y-195)/20][(x-210)/20];
if(val<10 || val>=80)
{
val=val>=80?val-80:80+val;
arr[(y-195)/20][(x-210)/20]=val;

while(button&2)
getpos(&button,&x,&y);

hidemouse();
setpos(30,50);
clearviewport();
showmouse();
setpos(prex,prey);
}
}

if(button&1 && x>=210 && x<=365 && y>=195 && y<=350)
{
char temp[4];
int trow,tcol;
//determine current box
x=210+(x-210)/20*20;
y=195+(y-195)/20*20;
trow=(y-195)/20;
tcol=(x-210)/20;
if(arr[trow][tcol]==9)
{
int row=10,col=5;
setviewport(0,0,getmaxx(),getmaxy(),1);
hidemouse();
outtextxy(200,100,"SORRY,YOU LOOSE THE GAME");
setviewport(200,190,385,370,1);
//prints X marks in END on screen
for(i=0;i {
for(j=0;j {
if(arr[i][j]==9 || arr[i][j]==89)
{
setfillstyle(1,RED);
bar(row,col,row+BSIZE,col+BSIZE);
outtextxy(row+5,col+5,"x");
}
row+=20;
}
row=10;
col+=20;
}
showmouse();
setviewport(0,0,getmaxx(),getmaxy(),1);
setfillstyle(1,YELLOW);
bar(170,400,270,425);
bar(330,400,430,425);
while(loop=='t')
{
setcolor(BLUE);
outtextxy(180,410,"PLAY AGAIN");
outtextxy(360,410,"QUIT");
getpos(&button,&x,&y);
if(!button&1)
{
if(x>=170 && x<=270 && y>=400 && y<=425)
{
setfillstyle(1,CYAN);
bar(170,400,270,425);
setfillstyle(1,YELLOW);
bar(330,400,430,425);
outtextxy(180,410,"PLAY AGAIN");
outtextxy(360,410,"QUIT");
while(x>=170 && x<=270 && y>=400 && y<=425 && !button&1)
getpos(&button,&x,&y);
}
if(x>=330 && x<=430 && y>=400 && y<=425)
{
setfillstyle(1,CYAN);
bar(330,400,430,425);
setfillstyle(1,YELLOW);
bar(170,400,270,425);
}
outtextxy(180,410,"PLAY AGAIN");
outtextxy(360,410,"QUIT");
while(x>=330 && x<=430 && y>=400 && y<=425 && !button&1)
getpos(&button,&x,&y);
}
else
{
if(x>=170 && x<=270 && y>=400 && y<=425)
{
setviewport(200,190,385,370,1);
loop='f';
hidemouse();
break;
}
if(x>=330 && x<=430 && y>=400 && y<=425)
{
restorecrtmode();
closegraph();
exit(0);
}
}
}
}
else
{ //NOT ON DANGER AREA
if(arr[trow][tcol]<50)
{
nclick++;
arr[trow][tcol]+=50;
}
}
}
}
if(loop=='t')
{
restorecrtmode();
closegraph();
exit(0);
}
}
}

initmouse()
{
i.x.ax=0;
int86(0x0033,&i,&o);
return(o.x.ax);
}

showmouse()
{
i.x.ax=1;
int86(0x0033,&i,&o);
}

hidemouse()
{
i.x.ax=2;
int86(0x0033,&i,&o);
}

restarea(int x1,int x2,int y1,int y2)
{
i.x.ax=7;
i.x.cx=x1;
i.x.dx=x2;
int86(0x0033,&i,&o);
i.x.ax=8;
i.x.cx=y1;
i.x.dx=y2;
int86(0x0033,&i,&o);
}

setpos(int x,int y)
{
i.x.ax=4;
i.x.cx=x;
i.x.dx=y;
int86(0x0033,&i,&o);
}

getpos(int *button,int *x,int *y)
{
i.x.ax=3;
int86(0x0033,&i,&o);
*button=o.x.bx;
*x=o.x.cx;
*y=o.x.dx;
}




Responses


No responses found. Be the first to respond and make money from revenue sharing program.

Feedbacks      
Popular Tags   What are tags ?   Search Tags  
(No tags found.)

Post Feedback


This is a strictly moderated forum. Only approved messages will appear in the site. Please use 'Spell Check' in Google toolbar before you submit.
You must Sign In to post a response.
Next Resource: Chess for two humans in C
Previous Resource: Bricks game in C
Return to Discussion Resource Index
Post New Resource
Category: Computer & Technology


Post resources and earn money!
 
Related Resources



Watch TV Channels
  • Watch Asianet TV online
  • Kairali TV in Internet
  • Surya TV online
  • Amritha TV Channel

  • Contact Us    Privacy Policy    Terms Of Use   

    SpiderWorks Technologies Pvt Ltd. 2006 - 2007 All Rights Reserved.