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 |
|
|
łapanie punktów i wysyłanie/odbieranie informacji ze stacji |
Autor |
Wiadomość |
Iroks1
Dołączył: 18 Mar 2009 Posty: 7
|
Wysłany: 18-03-2009, 21:01 ł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
Zjem cię
Twoja ulubiona misja: Swobodna na Krystalii
Pomógł: 6 razy Wiek: 20 Dołączył: 02 Lut 2009 Posty: 329 Skąd: Oleśnica
|
Wysłany: 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); |
|
|
|
|
|
|
|
| |
|
|
|
|
Polski Portal COLOBOTa © 2008 - 2012 |
|
|