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

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

void __fastcall TForml:
:FormMouseDown(TObject *Sender, TMouseButton
Button,
TSHIFTState SHIFT, int x, int y)
{
if (status == 2) return;
if (status == 0) status = 1;
x – = LEFT; у – = TOP;
if (x > 0 && у > 0) {
// преобразуем координаты мыши
// в индексы клетки поля
int row = y/H + 1;
int col = x/W + 1;
if (Button = mbLeft) {
if (Pole[row][col] == 9) {
Pole[row][col] +=100; status =2;
// игра закончена ShowPole(status); }
else if (Pole[row][col] < 9) {
Open(row,col); ShowPole(status); } }
else if (Button == mbRight) {
nFlag++; if (Pole[row][col] = 9)
nMin++;
Pole[row][col] += 200;
// поставили флаг if (nMin == NM && nFlag == MM) {
status = 2;
// игра закончена ShowPole(status);
}
else Kletka(row, col, status);
} } }
// Функция обработки события OnCreate обычно используется
// для инициализации глобальных переменных
void__fastcall TForml::FormCreate(TObject *Sender)
{
// В неотображаемые эл-ты массива, которые соответствуют
// клеткам по границе игрового поля, запишем число – 3.
// Это значение используется функцией Open для завершения
// рекурсивного процесса открытия соседних пустых клеток.
for (int row=0; row <= MR+1; row++)
for (int col=0; col <= MC+1; col++)
Pole[row][col] = – 3;
NewGameO; // "разбросать" мины
Forml › ClientWidth = W*MC;
Forml › ClientHeight = H*MR+TOP+1; }
// Вывод поля как результат обработки события Paint
// позволяет проводить любые манипуляции с формой
// во время работы программы
void fastcall TForml::FormPaint(TObject *Sender)
{
ShowPoletstatus); }
// Показывает поле
void fastcall TForml::ShowPole(int status)
{
for (int row = 1;
row <= MR; row++)
for (int col = 1;
col <= MC; col++)
Kletka(row, col, status);)
// рисует на экране клетку
void fastcall TForml::Kletka(int row, int col, int status)
{
int x = LEFT + (col-D* W;
int у = TOP + (row-1)* H;
if (status ==0) // начало игры {
// клетка – серый квадрат
Canvas › Brush › Color = clLtGray;
Canvas › Rectangle(x-l,y-l,x+W,y+H);
return; }
// во время (status = 1) и в конце (status = 2) игр
if (Pole[row][col] < 100)
{
// клетка не открыта
Canvas › Brush › Color = clLtGray;
// не открытые – серые
Canvas › Rectangle(x-l,y-l,x+W,y+H);
if (status == 2 SS Pole[row][col] = 9}
Mina(x, y); // игра закончена, показать мину return; }
// клетка открыта
Canvas › Brush › Color = clWhite;
// открытые – белые Canvas › Rectangle(x-1,y-1,x+W,у+Н);
if (Pole[row][col] == 100)
// клетка открыта, но она пустая return;.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.