WrightAI
NoAI Framework

NoAI Strona główna

Rozwój

Kamienie Milowe rozwoju
Sugerowane zmiany API

Programowanie SI

Dokumentacja API
Wprowadzenie
plik info.nut
plik main.nut
Podstawy
Poszukiwacz drogi
Użycie pathfinder`a kolei
Zapis / Odczyt danych
Dobrze wiedzieć
Squirrel
Home page
Typowe błędy
Listy
Poradnik na błędy OTTD
Trams
Biblioteki SI
Forum
Forum FAQ
Zachowanie SI
Użycie krótkich nazw

SIy

TestAI
WrightAI
Convoy
SimpleAI
Porównanie AI
Zobacz forum
Zobacz BaNaNaS
Wszystko kategorii NoAI

WrightAI to prosty przykład AI. Obecnie dostępnych jest wiele lepszych AI, ale jeśli chcesz zacząć pisać własne AI, to dobry punkt wyjścia. WrightAI było pierwszą działającą sztuczną inteligencją dla frameworka NoAI, który faktycznie buduje coś użytecznego i stąd pochodzi nazwa (wright to archaiczny angielski dla rzemieślnika lub konstruktora).

Opis działania

Pierwszą rzeczą, jaką robi po uruchomieniu, jest spanie o jednym tiku, ponieważ tworzenie firmy AI jest postrzegane jako DoCommand, więc nie można wykonywać żadnych innych DoCommands na tym tiku. Ale jeśli to zrobisz, OpenTTD zgłasza błąd asercji i ulega awarii.

Następnie nazywa się WrightAI #x (gdzie x jest liczbą bezpłatną) i wyświetla wiadomość powitalną:

   
  /* Give the boy a name */
  if (!AICompany.SetCompanyName("WrightAI")) {
     local i = 2;
     while (!AICompany.SetCompanyName("WrightAI #" + i)) {
        i++;
     }
  }
  this.name = AICompany.GetCompanyName(AICompany.MY_COMPANY);
  
  /* Say hello to the user */
  print(this.name + ": Welcome to WrightAI. I will be building airports all day long.");

Następnie bierze pożyczkę, tworzy system płatności i oblicza czas, w którym może spać za każdym razem i tworzy pętlę:

  while(true) {
     /* Loop is executed here */
     Sleep(sleepingtime);
     ticker += sleepingtime;
  }

Pętla zawiera następujące rzeczy:

Aby sprawdzić, gdzie można zbudować lotnisko, buduje siatkę obejmującą 10 najlepszych miast o liczbie mieszkańców powyżej 500 i sprawdza, czy może zbudować lotnisko na którymkolwiek z tych pól siatki.

Zobacz także