with Canvas do
begin
// установим цвет кисти и карандаша
Brush.Color := clRed; Pen.Color := clRed; Polygon(p); // флажок
// древко
Pen.Color := clBlack; MoveTo(p[0].x, p[0].y); LineTo(p[3].x, p[3].y);
// буква М
Pen.Color := clWhite; Polyline(m); Pen.Color := clBlack;
end; end;
При щелчке пользователя по некоторой клетке должно происходить определённое событие. Код этого события прописываем в процедуре для формы OnMouseDown
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
Var row, col : integer;
begin
if status = 2 // игра завершена
then exit; if status = 0 then // первый щелчок
status := 1;
// преобразуем координаты мыши в индексы клетки поля
row := Trunc(y/H) + 1; col := Trunc(x/W) + 1;
if Button = mbLeft then
begin
if Pole[row,col] = 9 then
begin // открыта клетка, в которой есть мина
Pole[row,col] := Pole[row,col] + 100; status := 2; // игра закончена
ShowPole(Form1.Canvas, status);
end else if Pole[row,col] < 9 then
Open(row,col); end else if Button = mbRight then
if Pole[row,col] > 200 then begin
// уберем флаг и закроем клетку
nFlag := nFlag - 1; Pole[row,col] := Pole[row,col]-200;
// уберем флаг
x := (col-1)* W + 1; y := (row-1)* H + 1; Canvas.Brush.Color := clLtGray;
Canvas.Rectangle(x-1,y-1,x+W,y+H);
end else begin // поставить в клетку флаг
nFlag := nFlag + 1; if Pole[row,col] = 9
then nMin := nMin + 1; Pole[row,col]:=Pole[row,col]+200;
// поставили флаг
if (nMin = NM) and (nFlag = NM) then begin
status := 2;
// игра закончена
ShowPole(Form1.Canvas, status); end
Достарыңызбен бөлісу: |