Procedure NewGame(); forward; // генерирует новое поле
Procedure ShowPole(Canvas : TCanvas; status : integer); forward;// Показывает поле
Procedure Kletka(Canvas : TCanvas; row, col, status : integer); forward; // выводит содержимое клетки
Procedure Open( row, col : integer); forward;// открывает текущую и все соседние клетки, в которых нет мин
Procedure Mina(Canvas : TCanvas; x, y : integer); forward; // Рисует мину
Procedure Flag( Canvas : TCanvas; x, y : integer); forward;// Рисует флаг
Первое событие, которое происходит, это создание формы. Запрограммируем код на это событие
procedure TForm1.FormCreate(Sender: TObject);
var row,col : integer;
begin
сюда запишите код заполнения всего массива значениями -3
NewGame(); // разбрасываем мины
Form1.ClientHeight := H*MR + 1; Form1.ClientWidth := W*MC + 1;
end;
В этой процедуре используется функция NewGame(), генерирующая минное поле. Её код приведён ниже
// новая игра — генерирует новое поле
procedure NewGame ();
var row, col : integer; // координаты клетки (индексы массива)
n : integer; // количество поставленных мин
k : integer; // кол-во мин в соседних клетках
begin // Очистим эл-ты массива, соответствующие клеткам игрового поля
for row :=1 to MR do
for col :=1 to MC do Pole[row,col] := 0;
// расставим мины
Randomize();// инициализация ГСЧ
n := 0; // кол-во мин
Достарыңызбен бөлісу: |