C++ Builder - вопросы программирования

       

Обработка события OnMouseDown на поверхности



Листинг 10.6.

Обработка события OnMouseDown на поверхности игрового поля ;
// нажатие кнопки мыши на игровом поле void _fastcall TForml::ForraMouseDown (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 == MM && nFlag = NM) { status =2;  // игра закончена ShowPole(status);
} else Kletka(row, col, status);
} } }
Функция Flag (листинг 10.7) рисует флажок. Флажок (Рисунок 10.13) состоит из четырех примитивов: линии (древко), замкнутого контура (флаг) и ломаной линии (буква "М"). Функция Flag рисует флажок, используя метод базовой точки, т. е. координаты всех точек, определяющих положение элементов рисунка, отсчитываются от базовой точки.

Функция Mina (листинг 10.8) рисует мину. Мина (Рисунок 10.14) состоит из восьми примитивов: два прямоугольника и сектор образуют корпус мины, остальные элементы рисунка — линии ("усы" и полоски на корпусе).

Обеим функциям в качестве параметров передаются координаты базовой точки рисунка и указатель на объект, на поверхности которого надо рисовать.

Содержание раздела