Проект "Сапер" - етап 1
Створимо поле для гри Сапер.
Розмір поля 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;
}