Site menu
Calendar
«  June 2014  »
SuMoTuWeThFrSa
1234567
891011121314
15161718192021
22232425262728
2930
Main » 2014 » June » 13 » C++ Program for MINESWEEPER
10:37:12 PM
C++ Program for MINESWEEPER
// MINESWEEPER
void main()
{
int b;
do
{
cout << "Enter number of squares per side (2 - 10)" << endl;
cin >> b;
}while(b < 1 && b >= 10);
int board[b][b]; //0 - 8 = # of mines, 9 is mine
int revealed[b][b]; //1 is revealed
int i = 0;
int j = 0;
int x = 0;
int y = 0;
int z; //number of mines
int q;
int t = 0; //game over input
int dead = 0;
do
{
cout << "How many mines? (1 - " << ((b*b)-1) << ")" << endl;
cin >> z;
}while(z <= 0 && z >= ((b*b)-1));
for(i=0;i<b;i++)
for(j=0;j<b;j++)
board[i][j] = 0;
i = random(i, b);
j = random(j, b);
cout << "Generating board..." << endl;
do
{
i+=3;
j+=6;
x = random(i, b);
y = random(j, b);
if(board[y][x] != 9)
{
board[y][x] = 9;
z--;
if((y-1) >= 0)
if(board[y-1][x] != 9)
board[y-1][x]++;
if((y-1) >= 0 && (x-1) >= 0)
if(board[y-1][x-1] != 9)
board[y-1][x-1]++;
if((x-1) >= 0)
if(board[y][x-1] != 9)
board[y][x-1]++;
if((y+1) < b)
if(board[y+1][x] != 9)
board[y+1][x]++;
if((y+1) < b && (x+1) < b)
if(board[y+1][x+1] != 9)
board[y+1][x+1]++;
if((x+1) < b)
if(board[y][x+1] != 9)
board[y][x+1]++;
if((y-1) >= 0 && (x+1) < b)
if(board[y-1][x+1] != 9)
board[y-1][x+1]++;
if((y+1) < b && (x-1) >= 0)
if(board[y+1][x-1] != 9)
board[y+1][x-1]++;
}
}while(z>0);
for(i = 0; i < b; i++)
for(j=0;j<b;j++)
revealed[i][j]=0;
//board creation end
//ask for input/check squares loop
do
{
system ("clear");
q = 0;
z = 0;
cout << " ";
for(i=0;i<b;i++)
cout << i << " ";
cout << endl;
for(i=0;i<b;i++)
{
for(j=0;j<b;j++)
{
if(j==0)
cout << i << " |";
if(revealed[i][j]==1)
reveal(board[i][j]);
else
cout << "_|";
if(j==(b-1))
cout << endl;
if(board[i][j]!=9 && revealed[i][j]==1)
q++;
if(board[i][j] == 9)
z++;
}
}
if(q >= ((b*b) - z))
{
cout << "You win!" << endl;
dead = 1;
}
if(dead == 0)
{
cout << "X: ";
cin >> x;
cout << "Y: ";
cin >> y;
}
if(board[y][x] == 9)
{
system ("clear");
cout << "You hit a mine!" << endl;
cout << " ";
for(i=0;i<b;i++)
cout << i << " ";
cout << endl;
dead = 1;
for(i=0; i<b; i++)
{
for(j=0;j<b;j++)
{
if(j==0)
cout << i << " |";
if(board[i][j]==9)
revealed[i][j]=1;
if(revealed[i][j]==1)
reveal(board[i][j]);
else
cout << "_|";
if(j==(b-1))
cout << endl;
}
}

}
if(board[y][x]==0)
{
revealed[y][x] = 1;
for(i=0;i<b;i++)
{
for(j=0;j<b;j++)
{
if(i>(y-2)&&i<(y+2))
if(j>(x-2)&&j<(x+2))
if(board[i][j]!=9)
revealed[i][j]=1;
}
}
}
if(board[y][x]>0 && board[y][x]<9)
revealed[y][x] = 1;
} while(dead == 0);
if (dead == 1)
replay();
}

void replay()
{
char a;
cout << "1) Replay 2) Quit" << endl;
cin >> a;
switch(a)
{
case '1':
main();
break;
case '2':
cout << "Quit" << endl;
break;
default:
cout << "Invalid input" << endl;
replay();
break;
}
}

void reveal(int x)
{
if(x == 0)
cout << "o|";
else if(x == 9)
cout << "x|";
else
cout << x << "|";
}

int random(int i, int b)
{
long ran;
int t = time(0);
int s;
srand(t);
s = ran;
ran = rand();
ran >>= ran / (ran * i) + (i * 1337);
ran = ran % b;
return ran;
}
Views: 1975 | Added by: Chinnu1 | Rating: 5.0/1
Total comments: 0
Only registered users can add comments.
[ Registration | Login ]
Entries archive
Our poll
Rate my site
Total of answers: 12590
Site friends
  • Create a free website
  • Online Desktop
  • Free Online Games
  • Video Tutorials
  • All HTML Tags
  • Browser Kits
  • Statistics

    Total online: 1
    Guests: 1
    Users: 0