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

Начало игры

В начале игры нужно расставить мины, затем для каждой клетки поля подсчитать, сколько мин находится в соседних клетках. Процедура NewGame (ее текст приведен в листинге 15.3) решает эту задачу.

Листинг 15.3. Процедура NewGame.

// новая игра – генерирует новое поле
procedure NewGame ();
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; // кол-во мин
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-l,col-l] = 9 then k = k + 1;
if Pole[row-1,col] =' 9 then k = k + 1;
if Pole[row-1,col+1] = 9 then k = k + 1;
if Pole[row,col-1] = 9 then k = k + 1;
if Pole[row,col+1] = 9 then k = k + 1;
if Pole[row+1,col-1] = 9 then k = k + 1;
if Pole[row+1,col] = 9 then k = k + 1;
if Pole[row+l,col+l] = 9 then k: = k + 1;
Pole[row,col]: = k;
end;
status: = 0; // начало игры
nMin: = 0; // нет обнаруженных мин
nFlag: = 0; // нет поставленных флагов
end;

После того как процедура NewGame расставит мины, процедура showPole (ее текст приведен в листинге 15.4) выводит изображение игрового поля.

Листинг 15.4. Процедура ShowPole.

// Показывает поле
Procedure ShowPoie(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;
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.