Oryginalna strona colobot.cba.pl umarła, gdy cba.pl przestało oferować darmowy hosting. To jest statyczny mirror, pobrany w 2018. ~krzys_h
|
Forum - Polski Portal COLOBOTa |
|
|
Recykling |
Autor |
Wiadomość |
DOJO
Piernik
Twoja ulubiona misja: Misja 36 (Ostatnia na nowej ziemi)
Wiek: 24 Dołączył: 21 Wrz 2008 Posty: 85
|
Wysłany: 27-02-2009, 21:57 Recykling
|
|
|
Jest pewien problem bo mam dobry skrypcik do recyklingu ale nie wychodzi on na 2 sposoby.
Czyli mniej więcej tak
1. Dojście do obiekty za pomocą funkcji goto.
2. Dojście za pomocą funkcji move i turn (wraz z direction i distance);
W pierwszym przypadku recykler dojeżdża do wraku bez problemu, ale zamiast sie zatrzymać przy wraku, próbuje na niego wjechać co uniemożliwia wykonanie kolejnej funkcji.
W drugim przypadku mogę zrobić tak:
move(distance(this.position, item.position) -3);
Ale w tedy nie będzie omijał przeszkód i będzie się obijał o wszystko co mu stanie na drodze.
Czy znacie jakiś dobry skrypcik do recyklingu? |
_________________
|
|
|
|
|
DemoLisH
Zbanowany
Wiek: 24 Dołączył: 20 Kwi 2008 Posty: 273 Skąd: Poznań
|
Wysłany: 27-02-2009, 22:27
|
|
|
napisalem dla ciebie funkcje:
Kod: | void object::goto2(point positionn,float dist)
{
point a;
a.z=positionn.z;
a.x=positionn.x-((positionn.x-position.x)/distance2d(position,positionn))*dist;
a.y=positionn.y-((positionn.y-position.y)/distance2d(position,positionn))*dist;
goto(a);
} |
stosujesz:
goto2(pozycja.position,odleglosc); |
_________________ Compiling [Gość.exe]...
Zapraszam na grę zwaną League of Legends:
http://signup.leagueofleg...e98cec278372604 |
|
|
|
|
bbiidduull
Dołączył: 09 Lut 2009 Posty: 140
|
Wysłany: 27-02-2009, 22:28
|
|
|
A można by chyba zrobić tak:
1. Dać instrukcje goto
2. Dać warunek czy dystans jest mniejszy równy 1, jak tak to zatrzymaj i wykonywać dalej reszte programu |
|
|
|
|
DemoLisH
Zbanowany
Wiek: 24 Dołączył: 20 Kwi 2008 Posty: 273 Skąd: Poznań
|
|
|
|
|
COLOBOT
Administrator sieci Założyciel portalu
Twoja ulubiona misja: Obie na Orfenii
Pomógł: 1 raz Dołączył: 07 Lut 2008 Posty: 353 Skąd: Jarocin
|
Wysłany: 28-02-2009, 08:41
|
|
|
Da się. Wystarczy na początku programu wpisać errmode(0); W takim wypadku jeśli goto() nie dojedzie do obiektu to program się nie wykrzaczy tylko będą się wykonywać kolejne instrukcje (wtedy można sprawdzać, czy pozycja od obiektu jest już wystarczająca). Tylko jest jedna wada, że robot będzie stukał jakąś minutę w ten wrak zanim instrukcja goto() się zakończy. |
_________________ Bykom STOP
A niechaj narodowie wżdy postronni znają, iż Polacy nie gęsi, iż swój język mają.
|
|
|
|
|
DOJO
Piernik
Twoja ulubiona misja: Misja 36 (Ostatnia na nowej ziemi)
Wiek: 24 Dołączył: 21 Wrz 2008 Posty: 85
|
Wysłany: 28-02-2009, 12:29
|
|
|
Dzięki! Teraz działa! |
_________________
|
|
|
|
|
|
|
| |
|
|
|
|
Polski Portal COLOBOTa © 2008 - 2012 |
|
|