Объект Свойство Значение Label1 Caption Моя первая программа


repeat row := Random(MR) + 1; col := Random(MC) + 1; if



бет16/23
Дата25.09.2023
өлшемі1.52 Mb.
#478523
түріПрограмма
1   ...   12   13   14   15   16   17   18   19   ...   23
Лабораторные

    Бұл бет үшін навигация:
  • Procedure
repeat
row := Random(MR) + 1; col := Random(MC) + 1;
if (Pole[row,col] <> 9) then
begin Pole[row,col] := 9; n := n+1; end;
until (n = NM);
// для каждой клетки вычислим кол-во мин в соседних клетках
for row := 1 to MR do
for col := 1 to MC do
if (Pole[row, col] <> 9) then
begin k :=0 ;
if Pole[row-1,col-1] = 9 then k := k + 1;

  1. Аналогично допишите код для всех других соседних клеток

end;
status := 0; nMin := 0; nFlag := 0;
end;

  1. Теперь необходимо записать код, происходящий на событие, вызванное перерисовкой формы OnPaint

ShowPole(Form1.Canvas, status);

  1. В коде используется процедура ShowPole, показывающая игровое поле на экране. Её код приведён ниже

// Показывает поле
Procedure ShowPole(Canvas : TCanvas; status : integer);
Var row, col : integer;
begin
for row := 1 to MR do
for col := 1 to MC do
Kletka(Canvas, row, col, status);
end;

  1. Процедура Kletka рисует отдельную клеточку поля и описана ниже

// выводит на экран изображение клетки
Procedure Kletka(Canvas : TCanvas; row, col, status : integer);
Var x,y : integer; // координаты области вывода
begin
x := (col-1)* W + 1; y := (row-1)* H + 1;
if status = 0 then begin
Canvas.Brush.Color := clLtGray; Canvas.Rectangle(x-1,y-1,x+W,y+H); exit; end;
if Pole[row,col] < 100 then begin
Canvas.Brush.Color := clLtGray; // неоткрытые — серые
Canvas.Rectangle(x-1,y-1,x+W,y+H);
// если игра завершена (status = 2), то показать мины


Достарыңызбен бөлісу:
1   ...   12   13   14   15   16   17   18   19   ...   23




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет