Ładny brzuch

Ma taki prosty programik w ktrym jeden piksel goni drugi piksel. Stworzyem tam bardzo proste algorytmy AI a chciabym je bardziej udoskonali. Mianowicie chc aby kropka gonica wykonywaa ruchy okrne a nie "walia" prosto na mnie i aby reagowaa na mj ruch z lekkim opnieniem. Jak to zrobi?
Gdzie mona znale dobre arty o robieniu sztucznej inteligencji i platformwek w DelphiX?



Jak dzialaja te twoje proste algorytmy AI??

GG: 4596137

To jest kod odpowiedzialny za poruszanie sie drugiej kropki za mn

if x>ex then inc(ex); //px = pozycja x gracza
if x<ex then dec(ex); //ex = pozycja x wroga
if y>ey then inc(ey);
if y<ey then dec(ey);

Ale wyglada to sztucznie

Opoznienie to po prostu sleepem zrob :)
Czyli np:
sleep(1000);
spowoduje to ze program wykona to co ma zrobic sekunde (1000ms) po twoim ruchu.

Nastepnie jesli interesuje cie ruch po luku, to uzyj wzoru na rysowanie okregu
y:=y_srodka+round(promien*sinus(i));
przy X zamieniasz sinus na cosinus a pod I podkladasz kolejno wartosc kata od 1 do 360 :)
Teraz jak zamiast kola chcesz zrobic ruch po luku, to zwiekszasz jedna wspolrzedna (np. y) - ustwiasz jej wieksze Y i wtedy wyjdzie ci elipsa. Pozniej wystarczy tylko zamiast pelnych 360 stopnii rysowac zaledwie 180 to wyjdzie ci luk. Teraz aby wszystko bylo ladnie nalezy zrobic tak:

1. wyznaczyc odleglosc miedzy punktem poczatkowym i koncowym
2. w polowie tej odleglosci postawic punkt
3. ten punkt wyznaczyc jako srodek elipsy
4. narysowac 1/2 elipsy = luk o zadanych parametrach

ja tak to robie i mi dziala, tylko nei pamietam czy dobry wzro na kolo podalem :D

..:: Unknow ::..
www: www.unknow.glt.pl
irc: #plhack, #pomoc
gg: 5123512



cytat:unknow napisa:

Opoznienie to po prostu sleepem zrob :)
Czyli np:
sleep(1000);
spowoduje to ze program wykona to co ma zrobic sekunde (1000ms) po twoim ruchu.

i zawiesi mu program :)

Bg?...root?..co za rznica??..Bg jest bardziej miosierny..
Leenox or BSD?

cytat:unknow napisa:

Opoznienie to po prostu sleepem zrob :)
Czyli np:
sleep(1000);
spowoduje to ze program wykona to co ma zrobic sekunde (1000ms) po twoim ruchu.

Nastepnie jesli interesuje cie ruch po luku, to uzyj wzoru na rysowanie okregu
y:=y_srodka+round(promien*sinus(i));
przy X zamieniasz sinus na cosinus a pod I podkladasz kolejno wartosc kata od 1 do 360 :)
Teraz jak zamiast kola chcesz zrobic ruch po luku, to zwiekszasz jedna wspolrzedna (np. y) - ustwiasz jej wieksze Y i wtedy wyjdzie ci elipsa. Pozniej wystarczy tylko zamiast pelnych 360 stopnii rysowac zaledwie 180 to wyjdzie ci luk. Teraz aby wszystko bylo ladnie nalezy zrobic tak:

1. wyznaczyc odleglosc miedzy punktem poczatkowym i koncowym
2. w polowie tej odleglosci postawic punkt
3. ten punkt wyznaczyc jako srodek elipsy
4. narysowac 1/2 elipsy = luk o zadanych parametrach

ja tak to robie i mi dziala, tylko nei pamietam czy dobry wzro na kolo podalem :D

..:: Unknow ::..
www: www.unknow.glt.pl
irc: #plhack, #pomoc
gg: 5123512

W firmie zajmujcej si pisaniem programw za funkcj [SLEEP] by wylecia z hukiem

http://www.members.l...adekw1988/forum
Pomucie mi je rozkrci

cytat:radekw1988 napisa:
W firmie zajmujcej si pisaniem programw za funkcj [SLEEP] by wylecia z hukiem

Niekoniecznie, czasem sleep sie przydaje przy demonstracyjnych programach.

pozdro8)

GG: 4596137

A skoro odradzacie mu sleep to co innego? Pobra czas i zaptli a bdzie o X wikszy?

----
m@il: ali88@tlen.pl
GG: 2083160

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •