Використаємо функції для проекту Сапер

В основній програмі потрібно створити масив логічного типу, котрий позначатиме відкритість клітинок на кожен момент часу.

bool open[10][10];

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

    {

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

       {

          open[i][j]=false;

       }

    }


1 функція - перевірка навколишніх клітинок та підрахунок мін у них. Функція приймає аргументи: масив (гральне поле), координати клітинки, яку потрібно перевірити. Результатом функції є ціле число: кількість мін у сусідніх клітинках по горизонталі, вертикалі та діагоналях.

int check (int a[10][10], int x, int y)

{

//перевірка мін у сусідніх клітинках

int k=0;

if (a[x][y+1]==-1) k++;

if (a[x+1][y]==-1) k++;

if (a[x][y-1]==-1) k++;

if (a[x-1][y]==-1) k++;

//перевірка мін у діагональних клітинках

if (a[x+1][y+1]==-1) k++;

if (a[x+1][y-1]==-1) k++;

if (a[x-1][y-1]==-1) k++;

if (a[x-1][y+1]==-1) k++;

if  (a[x][y]==-1) k=-1;

return k;

}


2 функція - друк на екран масиву відкритих клітинок. Функція приймає два аргументи: масив ігрового поля та масив, котрий позначає відкритість клітинок. Якщо клітинка відкрита, друкуємо її вміст (або "міну", або кількість мін в околі, котру обчислимо функцією check). Якщо клітинка ще не відкрита, друкуємо на її місці - Функція не повертає значень, вона лише друкує масив

void pole (int a[10][10], bool b[10][10])

{

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

    {

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

             {

                    if (b[i][j]==true)

                    {

                    if (a[i][j]==-1) cout << "*" ;

                           else cout<< check (a,i,j);

                    }

                    else cout << "-" ;

             }

             cout << endl;

    }

}

 

 В основному проекті необхідно реалізувати такий алгоритм:

Поки з клавіатури не буде введено певне ключове значення, наприклад 100, виконувати дії:

  • зчитати з клавіатури число - координати клітинки
  • встановити для цієї клітинки відкрите поле (в масиві open)
  • надрукувати масив відкритих клітинок
  • якщо потрапили на міну (в масиві arr), припинити гру - команда break


Результат проекту можна переглянути на наступних скріншотах: 

гра1

гра2

Last modified: Tuesday, 14 October 2014, 3:49 PM