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] - Lot

Revis - 19-06-2010, 15:12
Temat postu: Lot
Witam, jestem dość nowy w to, grałem kiedyś sporo pare lat temu, teraz znów powróciłem i mam problem, robiłem sobie programik, i czasami bot latajacy praktycznie sie nie ruszal probojac wjechac na gorke zamiast podleciec, narazie zrobilem zeby program sie nie przerywal podczas gdy sie "zatnie" bo w koncu mu sie udaje dojsc do celu ale zuzywa prawie cala baterie a to nie wielki dystans :P , nie mam pojecia jak zrobic aby Transporter Latajacy, przez program uniósł sie na 2 metry, bez zadnego celu, w sensie zeby zrobil to jak turn (90), albo move (5).
Bartek c++ - 19-06-2010, 15:39

hmm z tego co wiem latające boty nie mogąlecieć w bok i do przodu na raz ...
dam propozycję.
Kod:
while ( true )
{
float a,b;
a = position.z;
b = position.z + 2;
jet(1);
if (a < b )
{
break;
}
}

Program wznosi bota na 2 metry i wyłącza program.
a to aby wszedł na górke.
Kod:
while ( true )
{
float a,b;
a = position.z;
b = position.z + 2;
jet(1);
if (a < b )
{
move(5);
break;
}
}

adiblol - 19-06-2010, 16:43

Bartek c++: widzę że nie przetestowałeś programu. Nie ma szans na zadziałanie:
1. a = b to instrukcja przypisania a nie porównania!!!
2. gdyby zamienić to na a == b to i tak by nie działało, lepiej dać a < b lub a > b, zależnie od potrzeb.

Berserker - 19-06-2010, 20:22

Nikt tu sie nie postaral, zeby wytlumaczyc jak ogolnie sie lata...
Jest sobie funkcja jet(). Steruje ona moca silnika odrzutowego, w nawiasach podaje sie jaka czesc mocy silnika ma byc wykorzystana i czy ma robot leciec w gore czy w dol. Wartosci ujemne spowoduja opadanie, a dodatnie - domysl sie sam.

A program Bartka nie ma sensu, batonika dostanie ten, kto sie domysli dlaczego.

COLOBOT - 19-06-2010, 21:29

Berserker napisał/a:
A program Bartka nie ma sensu, batonika dostanie ten, kto sie domysli dlaczego.

Przypisanie wartości a i b powinno być przed pętlą, bo w obecnym programie po każdej iteracji program ustala nowe współrzędne docelowe i w konsekwencji leci "do nieba".

Poza tym a jest zawsze mniejsze od b ;) , zamiast a powinno być position.z

No i przydałoby się jeszcze wait(0.1), żeby procka nie przemęczać. Aha, jeszcze silnik odrzutowy trzeba wyzerować.

Poprawny i zoptymalizowany program wygląda tak:
Kod:
float b;
b = position.z + 2;
jet(1);
while (position.z < b) wait(0.1);
jet(0);


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