2d阵列完成扫雷板程序

时间:2015-11-20 00:43:36

标签: c++

您好我正在尝试编写一个程序,我似乎很棒。该程序最终应该显示一个10×10扫雷板的两个变种。其中一个如果在该位置有一个矿山,它会显示一个星号(*),如果没有我的,它会显示一个时期。第二个变体还需要显示星号位于电路板上的星号。但它不是一个时期,而是必须在任何方向上显示距离1个太空的地雷数量。我似乎无法想到如何轻松编写一个程序,将每个点周围的每个矿场相加。我也无法弄清楚为什么我的程序要求初始问题两次,即使它符合第一次停止循环的标准。

/*
Program: minesweeper(sort of)
The intention of this program is to display essentially two mine sweeper game boards one of which displays a *
where all of the mines would be located and a . where no mines are located. Then the second display 
should display a * where all of the mines are and then display a number based on how many mines surround that space.
*/
#include <iostream>
#include <time.h>
#include <math.h>

using namespace std;
double get_probability();
int plant_mines(bool mineCells[10][10], double prob);
int print(bool mineCells[10][10]);
int count_mines(bool mineCells[10][10], int mineCounters[10][10]);
int main()
{
    //used to hold true if there is a mine located at said location or false if there is no mine
    bool mineCells[10][10];
    //used to hold a value of -5 if the corrosponding value on mineCells is true and if the corrosponding value on
    //minecells is false it should add up and hold the value of how many mines are surroudning it.
    int mineCounters[10][10];
    get_probability();
    double prob = get_probability();
    plant_mines(mineCells, prob);
    print(mineCells);

    int stop;
    cin >> stop;
    return 0;
}
//asks the user for a number between 0 and 1 to use as the probability of mines apearing laster on.
double get_probability()
{
    double prob;
    bool repeat;
do
    {
        cout << "Please enter a number between 0 and 1: ";
        cin >> prob;
    //should execute once asking the user for a input between 0 and 1 and if the input is not between those two it shoud
    //then continue to repeat untill the permaiters set in the question are met.
        if (prob >= 0 && prob <= 1)
        {
            break;
        }
        else 
        {
            repeat = true;
        }
}while (repeat = true);
    return prob;
}
//takes the probability given by the user and then uses it to generate that percentage of mines on the field
int plant_mines(bool mineCells[10][10], double prob)
{
    srand((unsigned int)time(NULL));
    for (int count = 0; count < 10; count++)
    {
        for (int counter = 0; counter < 10; counter++)
        {
            //generates a random number between 0 and 1 and sets it equal to the variable random
            double random = static_cast<double>(rand()) / RAND_MAX;
            //is the variable random is less than or equal to the probability then the array is set to true meaning
            //there is a mine located at that position
            if (random <= prob)
            {
                mineCells[count][counter] = true;
            }
            //iff the random number is greater than the user input than there is no mine located at said position
            else
            {
                mineCells[count][counter] = false;
            }
        }
    }
    return mineCells[10][10];
}
//Should count up the mines surronding the location to be output later on
//(the mines surrounding the location do include all mines 1 space diagonal, vertical and horizontal from said location)
int count_mines(bool mineCells[10][10], int mineCounters[10][10])
{
    for (int count = 0; count < 10; count++)
    {
        for (int counter = 0; counter < 10; counter++)
        {
            if (mineCells[count][counter] == 1)
            {
                mineCounters[count][counter] = 0;
            }
            else
            {

            }
        }
        cout << endl;
    }
    return 0;
}
//displays a * where ever a mine is locate and a . where ever a mine is not located
int print(bool mineCells[10][10])
{
    for (int count = 0; count < 10; count++)
    {
        for (int counter = 0; counter < 10; counter++)
        {
            if (mineCells[count][counter] == 1)
            {
                cout << "*";
            }
            else
            {
                cout << ".";
            }
        }
        cout << endl;
    }

    return 0;
}

0 个答案:

没有答案