SlideShare a Scribd company logo
1 of 40
Download to read offline
AI - sztuczna
inteligencja w grach
   Filip Pierściński (Reality Pump)
             Kraków 2010
AI w nauce
•   sztuczna inteligencja (SI), ang. Artificial
    Intelligence (AI), dział informatyki, którego
    przedmiotem badań są reguły rządzące
    inteligentnymi zachowaniami człowieka (np.
    postrzeganiem, uczeniem się), tworzenie modeli
    formalnych tych zachowań i symulującego je
    oprogramowania.

                                       PWN
AI w grach

    Reguły rządzące inteligentnymi zachowaniami
przeciwników, ustalające stopień trudności rozgrywki.
AI w quasisymulatorach

Reguły rządzące inteligentnymi zachowaniami postaci,
 w ściśle określonym, przewidywalnym środowisku.
Test Turinga
Prawdziwy człowiek zadaje pytania w języku naturalnym i
    na podstawie odpowiedzi określa czy rozmawia z
człowiekiem, jeśli tak system przechodzi test pozytywnie.
 Żaden system od 1950 roku nie przeszedł tego testu.

CZYLI NIE MA INTELIGENTNYCH SYSTEMÓW???????
AI - algorytmy

• Systemy ekspertowe
• Sieci neuronowe
• Algorytmy genetyczne
• Logika rozmyta
• Liczby pseudo losowe
AI - branża IT
• Oprogramowanie typu CAD
• Oprogramowanie służące do predykcji
  najkorzystniejszych transakcji giełdowych
• Interaktywne mapy
• Oprogramowanie treningowe
• Efekty specjalne
AI - inne dziedziny

• Robotyka
• Logistyka
• Motoryzacja
AI - gry
• zachowania sterujące
• poszukiwanie ścieżek
• system trigerowania
• zarządzanie tworzeniem, usuwaniem,
  parametryzowaniem jednostek
• priorytetowanie zadań
AI - gry

• sterowanie przepływ danych miedzy
  jednostkami
• formacje
• taktyki
Zachowania sterujące -
      Pojęcia
• Agent autonomiczny
• Zachowanie
 • Wybór akcji
 • Sterowanie
 • Poruszanie
Agent autonomiczny

•   Położenie

•   Reprezentacja

•   Reaktywność

•   Wirtualność
• Reaktywność - jest to tendencja do
  reagowania na bodźce (psychologiczne
  podejście ) lub inaczej wielkość reakcji
  systemu w stosunku do bodźca
  (cybernetyczne podejście)

• Wirtualność - zaprojektowane z myślą o
  egzystowaniu w środowisku wirtualnym
Zachowanie
    Pojedyncza lub zestaw decyzji w wyniku których
autonomiczny agent wykona pojedynczą lub zestaw akcji.
W większości przypadków będą to akcje składające się na
 zachowanie spotykane u zwierząt lub ludzi w realnym
                świecie. (ale nie muszą!)
Wybór akcji

• Prosty switch
• Maszyna stanów
• Logika rozmyta
• Hierarchiczne drzewo decyzyjne
Sterowanie

• Śledzenie
• Ucieczka
• Pościg
• Unikanie
• Docieranie
Sterowanie

•   Omijanie

•   Błądzenie

•   Podążanie ścieżką
Poruszanie
• Ręczne sterowanie animacjami
• Przekazywanie dyrektyw do maszyny
  stanów
• Nisko poziomowe sterowanie Physics
  Character Controllerem
• Parametryzowanie postaci
Agent autonomiczny -
       implementacja
struct agent
{
    math_vector vPredkosc
    math_vector vPozycja;
    math_vector vOrientacja;
    float fSpeed;
    float fScalar; //może być utożsamiana z masą
}
Dynamiczne równanie
    ruchu (uproszczone)
math_vector vPrzyspieszenie;
math_vector vSilaSterujaca;

vPrzyspieszenie = vSilaSterujaca /a.fScalar;

a.vPredkosc = a.vPredkosc + vPrzyspieszenie;

if( speed == const)
a.vPredkosc = a.vPredkosc.Normal2D()*a.fSpeed;
else
a.vPredkosc = CLAMP(a.vPredkosc, 0, a.fSpeed);
Śledzenie

math_vector vKierunekDoCelu;
vKierunekDoCelu = vPozycjaCelu - a.vPozycja;
vKierunekDoCelu = vKierunekDoCelu.Normal2D;
vKierunekDoCelu = vKierunekDoCelu*a.fSpeed;
vSilaSterujaca = vKierunekDoCelu - a.vPredkosc;
Ucieczka

Analogicznie liczymy siłę sterującą jak w
przypadku podążania, z tym, że na koniec
zmieniamy jej kierunek na przeciwny.
Pościg
T = Len(vPozycjaCelu - a.vPozycja)*wspolczynikSkretu;

math_vector vKierunekDoCelu;
vKierunekDoCelu = vPozycjaCelu + a.vPredkoscCelu * T - a.vPozycja;
vKierunekDoCelu = vKierunekDoCelu.Normal2D;
vKierunekDoCelu = vKierunekDoCelu*a.fSpeed;
vSilaSterujaca = vKierunekDoCelu - a.vPredkosc;
Unikanie

Unikanie jest analogiczne do pościgu z tym, że
należy unikać predykowanej pozycji. Czyli
kierunek obliczonej siły sterującej pościgu musi
być przeciwny.
Docieranie

vAgentTarget = vTargetPozycja - a.vPozycja;
fDystans = Len(vAgentTarget);
fAktualnaPredkosc = a.fSpeed*(fDystans/fDystansSpowalniania);
vSilaSterujaca = (vAgentTarget/fDystans)* fAktualnaPredkosc - a.vPredkosc;
Omijanie
Rozwiązanie ?
Problem
Obwiednia na
              płaszczyźnie
Załóżmy że mamy pewien zbiór punktów na płaszczyźnie.
Obwiednią nazwiemy pewien podzbiór punktów tworzący
bryłę wypukłą zawierający w sobie wszystkie punkty tego
                        zbioru.
Obwiednia
Budowanie obwiedni
     czyli QuickHull
int index1;
int index2;
math_vector arrZbiorPunktow[16];
for(int i = 0; i < 16; i++)
{
  //szukam punktu index1 który jest najmniejsza
  suma x i y i punktu index2 który jest
  największą suma x i y
}
QuickHull
int arrPodzbior1[];
int arrPodzbior2[];
math_vector v_i1_i2 = arrZbiorPunktow[index2] - arrZbiorPunktow[index1];
for(int i = 0; i < 16; i++)
{
   math_vector v_i1_actual = arrZbiorPunktow[i] - arrZbiorPunktow[index1];
   float fCross = v_i1_i2.Cross(v_i1_actual).z;
   if(fCross < 0)
    arrPodzbior1[] = i;
   else
    arrPodzbior2[] = i;
}

//index1 i index 2 są to dwa pierwsze punkty obwiedni
QuickHull
int indexMaxArea;

for(int index in arrPodzbiorN)
{
    if((fArea = area(index1, index, index2)) > maxArea)
    {
        maxArea = fArea;
        indexMaxArea = index;
    }
}
//indexMaxArea kolejny kunkt do obwiedni
Szybkie liczenie pola
           powierzchni
float a = p1.Distance(p2);
float b = p2.Distance(p3);
float c = p3.Distance(p1);

float s = (a + b + c) * 0.5f;
	

 	

    a = s - a;
	

 	

    b = s - b;
	

 	

    c = s - c;
	

 	

    s = s * a * b * c;
    if (s < 0)
        return 0;
    return sqrtf(s);
QuickHull
Kierunek podążania po
            obwiedni
math_vector arrObwiednia[nIloscPunktow];
for(int i = 0; i < nIloscPunktow; i++)
{
      //szukamy najbliższego celowi punktu na obwiedni
      //nie może ten punkt należeć do agenta
}

int nAktualnieBadanyPunkt = najbliższy celowi punktu na obwiedni;
float fDystansUp = 0;
while(nAktualnieBadanyPunkt != ten punkt należeć do agenta)
{
   fDystansUp += arrObwiednia[nIloscPunktow - 1].Dystans2D(arrObwiednia[nIloscPunktow]);
   nIloscPunktow++;
}
Kierunek podążania po
       obwiedni
int nAktualnieBadanyPunktDown = najbliższy celowi punktu na obwiedni;
float fDystansDown = 0;
while(nAktualnieBadanyPunktDown != ten punkt należeć do agenta)
{
   fDystansDown += arrObwiednia[nAktualnieBadanyPunktDown - 1].Dystans2D
   (arrObwiednia[nAktualnieBadanyPunktDown]);
   nAktualnieBadanyPunktUp ++;
}

if(fDystansDown < fDystansUp*s_fWspoczynik)
{
    vSilaSterujaca = nAktualnieBadanyPunktUp[nAktualnieBadanyPunktUp - 1] -
    agent.vPozycja;
}
else
{
    vSilaSterujaca = nAktualnieBadanyPunktDown[nAktualnieBadanyPunktDown + 1] -
    agent.vPozycja;
}
Materiały


• http://www.red3d.com/cwr/papers/1999/
  gdc99steer.html
Dziękuje za uwagę.

More Related Content

Featured

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

AI w grach - Filip Pierściński

  • 1. AI - sztuczna inteligencja w grach Filip Pierściński (Reality Pump) Kraków 2010
  • 2. AI w nauce • sztuczna inteligencja (SI), ang. Artificial Intelligence (AI), dział informatyki, którego przedmiotem badań są reguły rządzące inteligentnymi zachowaniami człowieka (np. postrzeganiem, uczeniem się), tworzenie modeli formalnych tych zachowań i symulującego je oprogramowania. PWN
  • 3. AI w grach Reguły rządzące inteligentnymi zachowaniami przeciwników, ustalające stopień trudności rozgrywki.
  • 4. AI w quasisymulatorach Reguły rządzące inteligentnymi zachowaniami postaci, w ściśle określonym, przewidywalnym środowisku.
  • 5. Test Turinga Prawdziwy człowiek zadaje pytania w języku naturalnym i na podstawie odpowiedzi określa czy rozmawia z człowiekiem, jeśli tak system przechodzi test pozytywnie. Żaden system od 1950 roku nie przeszedł tego testu. CZYLI NIE MA INTELIGENTNYCH SYSTEMÓW???????
  • 6. AI - algorytmy • Systemy ekspertowe • Sieci neuronowe • Algorytmy genetyczne • Logika rozmyta • Liczby pseudo losowe
  • 7. AI - branża IT • Oprogramowanie typu CAD • Oprogramowanie służące do predykcji najkorzystniejszych transakcji giełdowych • Interaktywne mapy • Oprogramowanie treningowe • Efekty specjalne
  • 8. AI - inne dziedziny • Robotyka • Logistyka • Motoryzacja
  • 9. AI - gry • zachowania sterujące • poszukiwanie ścieżek • system trigerowania • zarządzanie tworzeniem, usuwaniem, parametryzowaniem jednostek • priorytetowanie zadań
  • 10. AI - gry • sterowanie przepływ danych miedzy jednostkami • formacje • taktyki
  • 11. Zachowania sterujące - Pojęcia • Agent autonomiczny • Zachowanie • Wybór akcji • Sterowanie • Poruszanie
  • 12. Agent autonomiczny • Położenie • Reprezentacja • Reaktywność • Wirtualność
  • 13. • Reaktywność - jest to tendencja do reagowania na bodźce (psychologiczne podejście ) lub inaczej wielkość reakcji systemu w stosunku do bodźca (cybernetyczne podejście) • Wirtualność - zaprojektowane z myślą o egzystowaniu w środowisku wirtualnym
  • 14. Zachowanie Pojedyncza lub zestaw decyzji w wyniku których autonomiczny agent wykona pojedynczą lub zestaw akcji. W większości przypadków będą to akcje składające się na zachowanie spotykane u zwierząt lub ludzi w realnym świecie. (ale nie muszą!)
  • 15. Wybór akcji • Prosty switch • Maszyna stanów • Logika rozmyta • Hierarchiczne drzewo decyzyjne
  • 16. Sterowanie • Śledzenie • Ucieczka • Pościg • Unikanie • Docieranie
  • 17. Sterowanie • Omijanie • Błądzenie • Podążanie ścieżką
  • 18. Poruszanie • Ręczne sterowanie animacjami • Przekazywanie dyrektyw do maszyny stanów • Nisko poziomowe sterowanie Physics Character Controllerem • Parametryzowanie postaci
  • 19. Agent autonomiczny - implementacja struct agent { math_vector vPredkosc math_vector vPozycja; math_vector vOrientacja; float fSpeed; float fScalar; //może być utożsamiana z masą }
  • 20. Dynamiczne równanie ruchu (uproszczone) math_vector vPrzyspieszenie; math_vector vSilaSterujaca; vPrzyspieszenie = vSilaSterujaca /a.fScalar; a.vPredkosc = a.vPredkosc + vPrzyspieszenie; if( speed == const) a.vPredkosc = a.vPredkosc.Normal2D()*a.fSpeed; else a.vPredkosc = CLAMP(a.vPredkosc, 0, a.fSpeed);
  • 21. Śledzenie math_vector vKierunekDoCelu; vKierunekDoCelu = vPozycjaCelu - a.vPozycja; vKierunekDoCelu = vKierunekDoCelu.Normal2D; vKierunekDoCelu = vKierunekDoCelu*a.fSpeed; vSilaSterujaca = vKierunekDoCelu - a.vPredkosc;
  • 22. Ucieczka Analogicznie liczymy siłę sterującą jak w przypadku podążania, z tym, że na koniec zmieniamy jej kierunek na przeciwny.
  • 23. Pościg T = Len(vPozycjaCelu - a.vPozycja)*wspolczynikSkretu; math_vector vKierunekDoCelu; vKierunekDoCelu = vPozycjaCelu + a.vPredkoscCelu * T - a.vPozycja; vKierunekDoCelu = vKierunekDoCelu.Normal2D; vKierunekDoCelu = vKierunekDoCelu*a.fSpeed; vSilaSterujaca = vKierunekDoCelu - a.vPredkosc;
  • 24. Unikanie Unikanie jest analogiczne do pościgu z tym, że należy unikać predykowanej pozycji. Czyli kierunek obliczonej siły sterującej pościgu musi być przeciwny.
  • 25. Docieranie vAgentTarget = vTargetPozycja - a.vPozycja; fDystans = Len(vAgentTarget); fAktualnaPredkosc = a.fSpeed*(fDystans/fDystansSpowalniania); vSilaSterujaca = (vAgentTarget/fDystans)* fAktualnaPredkosc - a.vPredkosc;
  • 29. Obwiednia na płaszczyźnie Załóżmy że mamy pewien zbiór punktów na płaszczyźnie. Obwiednią nazwiemy pewien podzbiór punktów tworzący bryłę wypukłą zawierający w sobie wszystkie punkty tego zbioru.
  • 31. Budowanie obwiedni czyli QuickHull int index1; int index2; math_vector arrZbiorPunktow[16]; for(int i = 0; i < 16; i++) { //szukam punktu index1 który jest najmniejsza suma x i y i punktu index2 który jest największą suma x i y }
  • 32. QuickHull int arrPodzbior1[]; int arrPodzbior2[]; math_vector v_i1_i2 = arrZbiorPunktow[index2] - arrZbiorPunktow[index1]; for(int i = 0; i < 16; i++) { math_vector v_i1_actual = arrZbiorPunktow[i] - arrZbiorPunktow[index1]; float fCross = v_i1_i2.Cross(v_i1_actual).z; if(fCross < 0) arrPodzbior1[] = i; else arrPodzbior2[] = i; } //index1 i index 2 są to dwa pierwsze punkty obwiedni
  • 33. QuickHull int indexMaxArea; for(int index in arrPodzbiorN) { if((fArea = area(index1, index, index2)) > maxArea) { maxArea = fArea; indexMaxArea = index; } } //indexMaxArea kolejny kunkt do obwiedni
  • 34. Szybkie liczenie pola powierzchni float a = p1.Distance(p2); float b = p2.Distance(p3); float c = p3.Distance(p1); float s = (a + b + c) * 0.5f; a = s - a; b = s - b; c = s - c; s = s * a * b * c; if (s < 0) return 0; return sqrtf(s);
  • 36. Kierunek podążania po obwiedni math_vector arrObwiednia[nIloscPunktow]; for(int i = 0; i < nIloscPunktow; i++) { //szukamy najbliższego celowi punktu na obwiedni //nie może ten punkt należeć do agenta } int nAktualnieBadanyPunkt = najbliższy celowi punktu na obwiedni; float fDystansUp = 0; while(nAktualnieBadanyPunkt != ten punkt należeć do agenta) { fDystansUp += arrObwiednia[nIloscPunktow - 1].Dystans2D(arrObwiednia[nIloscPunktow]); nIloscPunktow++; }
  • 37. Kierunek podążania po obwiedni int nAktualnieBadanyPunktDown = najbliższy celowi punktu na obwiedni; float fDystansDown = 0; while(nAktualnieBadanyPunktDown != ten punkt należeć do agenta) { fDystansDown += arrObwiednia[nAktualnieBadanyPunktDown - 1].Dystans2D (arrObwiednia[nAktualnieBadanyPunktDown]); nAktualnieBadanyPunktUp ++; } if(fDystansDown < fDystansUp*s_fWspoczynik) { vSilaSterujaca = nAktualnieBadanyPunktUp[nAktualnieBadanyPunktUp - 1] - agent.vPozycja; } else { vSilaSterujaca = nAktualnieBadanyPunktDown[nAktualnieBadanyPunktDown + 1] - agent.vPozycja; }
  • 38.