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