Иллюстрированный самоучитель по C++ Builder

Текст программы

if (Pole[row][col] >= 101 && Pole[row][col] <= 108) {
Canvas › Font › Size = 14;
Canvas › Font › Color = clBlue;
Canvas › TextOutA(x+3,y+2,IntToStr(Pole[row][col] – 100));
return; }
if (Pole[row][col] >= 200) Flag(x, y);
if (Pole[row][col] == 109) // на этой мине подорвались! {
Canvas › Brush › Color = clRed;
Canvas › Rectangle(x,y,x+W,y+H); }
if ((Pole[row][col] % 10 == 9) && (status == 2))
Mina(x, y); }
// рекурсивная функция открывает текущую и все соседние
// клетки, в которых нет мин
void fastcall Open(int row, int col)
{
if (Pole[row][col] = 0) {
Pole[row][col] = 100;
// открываем клетки слева, справа, снизу и сверху
Open(row,col-l);
Open(row-l,col);
Open(row,col+1);
Open(row+1,col);
// открываем примыкающие диагонально
Open(row-l,col-l); Open(row-l,col+l);
Open(row+1,col-1); Open(row+1,col+1);
}
else
// – 3 – это граница игрового поля
if (Pole[row][col] < 100 && Pole[row][col]!= – 3}
Pole[row][col] += 100; }
// новая игра – генерирует новое поле
void __£astcall NewGame()
{
// Очистим эл-ты массива, соответствующие отображаемым
// клеткам, а в неотображаемые (по границе игрового поля)
// запишем число – 3. Уникальное значение клеток границы
// используется функцией Open для завершения рекурсивного
// процесса открытия соседних пустых клеток.
int row,col;
for (row=0; row <= MR+1; row++)
for (col=0; col <= MC+1; col++)
Pole[row][col] = – 3; for (row=l;
row <= MR; row++)
for (col=l; col <= MC; col++) Pole[row][col] = 0;
// расставим мины
time_t t; // используется ГСЧ
srand((unsigned) time(&t));
// инициализация ГСЧ
int n = 0; // кол-во мин
do
{
row = rand() % MR +1;
col = rand() % MC +1;
if (Pole[row][col]!= 9)
{
Pole[row][col] = 9;
n++;
} } while (n < 10);
// вычисление кол-ва мин в соседних клетках
int k;
for (row = 1; row <= MR; row++)
for (col = 1; col <= MC;
col++) if (Pole[row][col]!= 9) {
k =0;
if (Pole[row-l][col-1] == 9} k++;
if (Pole[row-1][col] == 9) k++;
if (Pole[row-1][col+1] == 9) k++;
if (Pole[row][col-1] == 9) k++;
if (Pole[row][col+1] == 9) k++;
if (Pole[row+1][col-1] == 9) k++;
if (Pole[row+1][col] == 9) k++;
if (Pole[row+1][col+1] == 9) k++;
Pole[row][col] = k; }
status =0; // начало игры nMin =0;
 // нет обнаруженных мин nFlag =0; // нет флагов }
// рисует мину
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.