Ł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
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