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 [programowanie] - łapanie punktów i wysyłanie/odbieranie informacji ze stacji

Iroks1 - 18-03-2009, 21:01
Temat postu: łapanie punktów i wysyłanie/odbieranie informacji ze stacji
Cytat:
extern void object::Łapanie_punktow()
{
object pkt,koniec;
pkt = radar(WayPoint);
koniec = radar(GoalArea);
while (true)
{


if ( pkt == null )
{

turn(direction(koniec.position));
move(distance(position, koniec.position));

}
else
{
pkt = radar(WayPoint,0,360,0,20);
turn(direction(pkt.position));
move(distance(position, pkt.position));
}
}
}

Otóż w tym programie, gdy spełni się warunek, że nie ma już punktów do łapania, to program się zatrzymuje i nie chce pojechać do punktu końcowego :-/ a jak się go uruchomi jeszcze raz to odnajduje drogę i jedzie :-/

Cytat:
extern void object::stacje()
{
object pkt,koniec,direction,lenght;
pkt = radar(ExchangePost);
koniec = radar(GoalArea);
while (true)
{
receive (direction);
receive (lenght);
turn(direction(direction.position));
move(distance(position, lenght.position));
}
}

Wiem, że chyba w tym programie, odczytywana jest odległość i kąt obrotu, ale właśnie, czemu nie chce program ich wykorzystać ?

pytania może proste ale daaawno tego nie włączałem :)

colobotwymiiata - 19-03-2009, 14:05

Co do pierwszego programu to "radar(WayPoint);" powinieneś dać przed "if(pkt==null)" i powinno działać. A w drugim programie: Po pierwsze informację z "receive();" powinieneś zachować w zmiennej typu float, inaczej program "zapomina" liczby odebrane z stacji.Po drugie,źle odbierasz informację ze stacji, poczytaj o tym w SatComie. Po trzecie, skoro odebrane informacje są typu float, nie można obliczać kątu obrotu instrukcją "direction();" i odległości instrukcją "distance();". To już są gotowe wartości do obrotu, więc nie"turn(direction(direction.position));" i "move(distance(position, lenght.position));", tylko:
Kod:
float dist,dir;
dir=receive();
turn(dir);
dist=receive();
move(dist);


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