Иллюстрированный самоучитель по Delphi 7 для начинающих

Листинги

// нажатие кнопки мыши на игровом поле
procedure TForm1.Form1MouseDown(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
else Kletka(Form1.Canvas, row, col, status);
end;
end;
// Выбор меню Новая игра
procedure TForm1.N1Click(Sender: TObject);
begin
NewGame();
ShowPole(Form1.Canvas,status);
end;

Листинг 15.10. Модуль О программе.

// выбор из меню? команды Справка
procedure TForm1.N3Click(Sender: TObject);
var
HelpFile: string; // файл справки
HelpTopic: string; // раздел справки
pwHelpFile: PWideChar; // файл справки (указатель на WideChar строку)
pwHelpTopic: PWideChar; // раздел (указатель на WideChar строку)
begin
HelpFile: = 'saper.chm';
HelpTopic: = 'saper_02.htm';
// выделить память для WideChar строк
GetMem(pwHelpFile, Length(HelpFile) * 2);
GetMem(pwHelpTopic, Length(HelpTopic)*2);
// преобразовать Ansi строку в WideString строку
pwHelpFile: = StringToWideChar(HelpFile,pwHelpFile,MAX_PATH*2);
pwHelpTopic: = StringToWideChar(HelpTopic,pwHelpTopic,32);
// вывести справочную информацию
Form1.Hhopen1.OpenHelp(pwHelpFile,pwHelpTopic);
end;
procedure TForm1.Form1Paint(Sender: TObject);
begin
ShowPole(Form1.Canvas, status);
end;
end.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.