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

Problemy techniczne - goto(item.position);

Rioux - 13-02-2009, 13:34
Temat postu: goto(item.position);
Witam

poszukuje listingu komendy goto .
Czy wie ktoś czy jest to w ogóle do znalezienia gdzieś ?


///Literówki - DeiDara

Konrad - 13-02-2009, 14:01

Jakiego listingu?
Rioux - 13-02-2009, 14:18

goto musi składać się z jakis "części składowych" tzn np weź współrzędne celu, obróć się w jego kierunku, jedz, jak jest przeszkoda na drodze zakręć trochę w lewo lub prawo, poczekaj sekundę, znowu obróć sie w kierunku celu, sprawdź odległość od celu jak jest mniejsza niż 1, zatrzymaj silniki i koniec programu goto.
coś takiego :) i tego właśnie szukam.

Tak na marginesie goto nie jest doskonale bo robot często głupieje.
Już kombinuje z czymś takim ale to ciągle ma jeszcze dużo wad, dlatego z listingiem byłoby mi łatwiej :)

extern void object::Lazikkolowy001()
{

object item01 = radar(PowerCell);
object item02 = radar(TrackedGrabber );
int stop = 2;
// wpisujac 1 - bot zatrzymuje sie byle gdzie
// wpisujac 2 - bot wraca na statek

errmode(0);

while(distance(item01.position,position)>0.5)
{
point MiejsceZatrzymania = position;
int error = goto(item01.position);
if (error != 0)
{
turn(direction(item01.position));
move(10);
if (distance(MiejsceZatrzymania,position)<2)
{
turn(90);
move(5);
}
}
else break;
}
grab();

while(distance(item02.position,position)>0.5)
{
point MiejsceZatrzymania = position;
int error = goto(item02.position);
if (error != 0)
{
turn(direction(item02.position));
move(10);
if (distance(MiejsceZatrzymania,position)<2)
{
turn(90);
move(5);
}
}
else break;
}
drop();

if (stop == 1)
{
move(-5);
message ("Zadanie wykonane. Czekam na dalsze instrukcje", DisplayInfo );
}
if (stop == 2)
{
object itemCel=radar(SpaceShip);
while(distance(itemCel.position,position)>0.5)
{
point MiejsceZatrzymania = position;
int error = goto(itemCel.position);
if (error != 0)
{
turn(direction(itemCel.position));
move(10);
if (distance(MiejsceZatrzymania,position)<2)
{
turn(90);
move(5);
}
}
else break;
}
message ("Jestem na Statku gotowy do odlotu", DisplayInfo );
}
}


///Naprawdę trzeba być dzieckiem pokemona - DeiDara

DeiDara - 13-02-2009, 22:06

dam ci rade zaloguj się
Konrad - 13-02-2009, 22:52

Może jestem tępy ale nie rozumiem o co mu chodzi :-P
DeiDara - 14-02-2009, 09:16

kogo nie rozumiesz
Abadon - 14-02-2009, 09:22

Najprawdopodobniej Rioux'a. Nie wie co to listing.


///Literówka Ha! - DeiDara

DeiDara - 14-02-2009, 09:28

aha myślałem że mnie nie rozumie
Konrad - 14-02-2009, 10:31

Tak, Rioux'a :-) Ogólnie wiem co to listing, ale tutaj nie wiem w ogóle co on chce :-P

///Błąd - DeiDara

COLOBOT - 14-02-2009, 11:08

Chodzi o to, że niektóre funkcje można rozbić na mniejsze, jednak funkcji pierwotnych (do których należy goto) raczej się nie da (może niektóre, ale goto chyba nie).
adiblol - 14-02-2009, 11:39

Uwaga programisty: Funkcja goto jest zapisana w pliku colobot.exe lub cbot.dll. Sprawdzenie jej algorytmu wymaga użycia deasemblera.
rioux - 14-02-2009, 17:05

Dziękuję.
Wiec będę musiał kombinować :-?

Temat można zamknąć

///Z 8 wyrazów zrobić błąd w 6 OMG - DeiDara

Abadon - 14-02-2009, 19:59

Na prośbę riouxa zamykam temat (w razie czego odblokuje się go w przyszłości).

///Literówka - DeiDara


Powered by phpBB modified by Przemo & WRIM © 2003 phpBB Group