Программирование - это просто
Advertisement
Главная arrow Искусственный интеллект arrow Общие идеи искусственного интеллекта arrow Создаем искусственный интеллект. Урок 10. Закончим рисование графа пространства состояний.
25.04.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Создаем искусственный интеллект. Урок 10. Закончим рисование графа пространства состояний. Печать E-mail
Автор megabax   
22.11.2010 г.
unit AIObj

Создаем искусственный интеллект. Урок 10. Закончим рисование графа пространства состояний.

Исходники у уроку можно скачать здесь.

Прежде чем дорабатывать рисование дуг, как было обещано на прошлом уроке, давайте произведен небольшой рефакторинг кода. Поскольку Искусственный интеллект по английский Artificial intelligence, заменив во всех созданных нами классах префикс II на AI. Теперь доработаем метод DrawArc:

procedure TAIProblemSpace.DrawArc(AImage:TImage;index1,index2:integer);
var xr,yr,dx,dy,x,y:integer; ar:double; ari:integer;
      y2:integer;
      side:integer;
      dir:integer;
begin
      if index2>index1 then dir:=1 else dir:=-1;
      if index2 mod 2 = 0 then
      begin
         side:=-1;
         x:=FLeft+FTopWidth;
      end else begin
         side:=1;
         x:=FLeft;
      end;
      y:=FTop+index1*FDistance;
      y2:=FTop+index2*FDistance;
      dx:=FTopWidth;
      dy:=FTopHeight;
      xr:=x+dx*5;
      yr:=FTop+index2*FDistance;
      DDraw(AImage.Canvas, x, y+dy div 2, x, y2+dy div 2,(10+abs(index2-index1)*5)*side*dir);
      AImage.Canvas.MoveTo(x, y2+dy div 2);
      if dir=1 then
     begin
        AImage.Canvas.LineTo(x-5*side, y2+dy div 2);
        AImage.Canvas.MoveTo(x, y2+dy div 2);
        AImage.Canvas.LineTo(x, y2+dy div 2-7);
     end else begin
        AImage.Canvas.LineTo(x-5*side, y2+dy div 2);
        AImage.Canvas.MoveTo(x, y2+dy div 2);
        AImage.Canvas.LineTo(x, y2+dy div 2+7);
     end;
end;

Далее, тестовый пример (при создании формы);

procedure TfrmAI.FormCreate(Sender: TObject);
var PS:TAIProblemSpace;
       p,p1,p2,p3:TAIStateItem;
begin
       p:=TAIStateItem.Create;
       p1:=TAIStateItem.Create;
       p2:=TAIStateItem.Create;
       p3:=TAIStateItem.Create;
       p.AddExit(p1);
       p.AddExit(p2);
       p2.AddExit(p3);
       p1.AddExit(p);

      PS:=TAIProblemSpace.Create;
      PS.Add(p);
      PS.Add(p1);
      PS.Add(p2);
      PS.Add(p3);
      PS.Draw(ImageTest);
end;

Теперь запустим программу и увидим такую картинку:

Создаем искусственный интеллект. Урок 10. Закончим рисование графа пространства состояний.

Исходники у уроку можно скачать здесь.

Последнее обновление ( 22.11.2010 г. )
 
« След.   Пред. »
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги