hi i am new in programming.i want to write a function “minesweeper(int, int, int )” that takes 3 arguments a, b, and p and produces an a-by-b Boolean array where each entry is occupied with probability p (e.g. if the randomly generated number is less than or equal to p, the cell is referred as empty else occupied) . In the minesweeper game, occupied cells represent bombs and empty cells represent safe cells. Print out the array using an asterisk for bombs and a period for safe cells. Then, replace each safe square with the number of neighboring bombs (above, below, left, right, or diagonal).kindly help and guide me
dureadan
Edited
by dureadan
- 2 Contributors
- forum3 Replies
- 7 Views
- 5 Years Discussion Span
- comment Latest Post by Lucaci Andrew
Lucaci Andrew 140
But, have you tried to write some code? Show us what you got.
dureadan
i dnt knw wt to do,kindly tell and guide me
Lucaci Andrew 140
So, you need a function with three parameters. The 1st two parameters are the sizes of the matrix, and the last is the probability. I do have some questions related to your project. For instance, do you randomly generate numbers between 0 and 1? From my knowledges of probability, p must take a value between 0 and 1, so I figure, your random number generator should take also values from 0 to 1. If that's the case, than you'll need a rand()
funtion which would generated double numbers, not ints. For that, here's this:
double drand (double low, double high){
return ((double)rand()*(high-low))/(double)RAND_MAX+low;
}
In your case you should use it like drand (0, 1);
.
Also, you'll need to dynamically allocate a bool matrix of aXb.
bool** matr = new bool* [a];
for (int i=0;i<a;i++) matr[i] = new bool [b];
You'll need to have a number, randomly genedated, and compare it with the probability. Also, this should be done in a loop, so that if the number is lower, to mark the space in the matrix as free (true
), or as occupied (false
) if the number is greater. Here's a quick pseudocode:
for i from 0 to a do
for j from 0 to b do
num <- randomly generated number between 0 and 1 (using drand)
if num < p then
matr[i][j] <- true
else matr[i][j] <- false
end_if
end_for
end_for
This function will fill up your newly allocated bool matrix with true/false values (free/occupied).
As for the printing part, that's easy:
for i from 0 to a do
for j from 0 to b do
if matr[i][j] = true then
print "."
else print "*"
end_if
if j = a-1 then
print new line
end_if
end_for
end_for
These are just some tips for your program. Having them, try to think how you could actually solve your problem. Good luck.