Створимо поле для гри Сапер.

Розмір поля 10х10 (двовимірний масив, початково заповнений нулями).

У ньому необхідно розмістити 10 мін. Оскільки згодом потрібно буде рахувати кількість мін в околі кожної клітинки, варто передбачити таке позначення міни, яке відрізнятиме її від нулів та чисел 1,2,3 і т.д. , які позначатимуть кількість мін навколо. Тому позначатимемо наявність міни у клітинці значенням -1.

Якщо згенерувати 10 випадкових пар чисел (0,9) як координат розташування мін, може трапитись так, що буде створено однакові пари чисел. Тому перед тим, як записувати -1 у клітинку з координатами, потрібно перевірити, чи у цій клітинці вже не міститься значення -1. Якщо так, то потрібно обрати іншу пару випадкових чисел (0,9).

Під час друкування масиву на екран, виконаємо підстановку: якщо елемент -1, то друкуємо *, інакше друкуємо -. Зауважте, що масив у такому вигляді друкується лише для контролю під час розробки проекту - під час реального запуску цей блок виведення необхідно закоментувати.

#include <iostream>

#include <ctime>

using namespace std;

int main()

{   srand( time(0) );

    setlocale(LC_ALL, "Ukrainian");

    int arr[10][10];

// початково заповнюємо масив нулями

    for (int i = 0; i <10; ++i)

    {

             for (int j=0; j<10; j++)

             {

             arr[i][j]=0;

       }

    }

// заповнюємо масив 10 значеннями -1

       for (int k=1; k<11; k++)

       {

             int a=rand()%10;

             int b=rand()%10;

             if (arr[a][b]==-1)

                    {      int a=rand()%10;

                           int b=rand()%10;

                           arr[a][b]=-1;}

             else

             {

                    arr[a][b]=-1;

             }

       }

// друкуємо масив

    cout << "\nСапер: " << endl;

    for (int i = 0; i <10; ++i)

    {

             for (int j=0; j<10; j++)

             {

             if (arr[i][j]==-1)

                    cout << "*" ;

             else

                    cout<< "-";

             }

             cout << endl;

    }

    cout << endl;

    system("pause");

    return 0;

}

Остання зміна: Вівторок 14 жовтня 2014 15:06 PM