Курсовая работа: Кратчайший путь передвижения короля по шахматному полю
memo1.Clear;
memo1.Lines.add('Укажите целевую клетку');
end;
// Мы выбрали клетку - цель
if etap=selectPlace then begin
// Если аккурат в этой клетке стоит король, выходим из процедуры, пользователь должен выбрать другое место
if ((korolX=x) and (korolY=y)) then exit;
// Загрузим в клетку маркер
(sender as timage).Picture.LoadFromFile('zel.bmp');
nadoX:=x;
nadoY:=y;
// Изменим значение переменой etap, чтобы больше ничего нельзя было делать: ни расставлять короля, ни выбирать клетку
inc(etap);
// И прочертим линию от короля до клетки – назначения – это и будет кратчайший путь
dda_line(korolX, korolY, nadoX, nadoY);
end;
//else
end;
procedure TForm2.Execute(x, y: integer);
// Процедура вызывается, когда от пользователя получена информация о размерах X и Y поля
var wid, i, j: integer;
begin
razmerX:=x;
razmerY:=y;
etap:=postanovka; // Сейчас пользователь будет ставить короля, развернем окно на весь экран
self.WindowState:=wsMaximized;
//
// Высчитываем размер клетки исходя из размеров окна и количества клеток
wid:=self.Width div (max(x, y)+2);