Oryginalna strona colobot.cba.pl umarła, gdy cba.pl przestało oferować darmowy hosting. To jest statyczny mirror, pobrany w 2018. ~krzys_h
 Polski Portal COLOBOTa - COLOBOT Polish Portal
Forum - Polski Portal COLOBOTa
Strona głównaStrona główna UżytkownicyUżytkownicy GrupyGrupy StatystykiStatystyki


Poprzedni temat «» Następny temat
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. :roll:

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ń
Wysłany: 27-02-2009, 22:45   

ale nie da sie zatrzymac funkcji goto
_________________
Compiling [Gość.exe]...

Zapraszam na grę zwaną League of Legends:
http://signup.leagueofleg...e98cec278372604
 
 
     
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! :mrgreen:
_________________
 
 
     
Wyświetl posty z ostatnich:   

Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Polski Portal COLOBOTa © 2008 - 2012