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

Programy - Mam fajny pomysł na program ale...

bbiidduull - 08-02-2010, 14:12
Temat postu: Mam fajny pomysł na program ale...
Witam. Jak szybko rozładować baterie?. Zawsze jak robię jakiś program to potrzebuje mieć określony poziom energii. Wszystko mam ale jak ją najszybciej rozładować?
Bartek c++ - 08-02-2010, 16:06

W latających:
Kod:
while ( true )
{
jet(9999999);
}

W jeżdżących:
Kod:
while ( true )
{
turn(360);
}

W strzelających:
Kod:
while ( true )
{
fire(1);
}

W innych np:
Kod:
while ( true )
{
thump();
}
while ( true )
{
move(1);
turn(180);
}

FE4R - 08-02-2010, 17:40

Jeśli testujesz dany poziom baterii (najczęściej pustą baterię...), najlepiej by było, abyś wykorzystał Osłaniacza, gdyż ten będzie generował osłonę, póki poziom energii nie spadnie do zera.
Jeśli nie masz dostępu do osłaniacza, po prostu wykorzystaj dowolnego robota z programem:
Kod:
while(true) motor(-1,1);


Dwa ostatnie kody od Bartka nie rozładują baterii całkowicie.

COLOBOT - 08-02-2010, 18:20

Na pewno to wiecie, ale powiem: nawet po całkowitym rozładowaniu baterii robot może wykonywać instrukcję turn (zauważyłem to w programie do podążania za innym robotem).
Abadon - 08-02-2010, 18:28

Dokładnie, tak samo jest gdy bateria w transporterze jest rozładowana to nadal tym jego "chwytnikiem" można "pracować".
COLOBOT - 08-02-2010, 18:32

To akurat jest oczywiste; gdyby się nie dało, to w jaki sposób miałby sam sobie zmienić baterię?
Abadon - 08-02-2010, 18:45

Tak to jest oczywiste jak osy na Wulkani, ale przypuśćmy że w rzeczywistości taki robot po wyładowaniu głównego źródła energii skąd miałby energię na wykonanie pracy? Chociaż z drugiej strony, kto wie co w środku robota umieścili "fachowcy z Epsiteca"?, ale sprawdzają metodą "prześwietlenia obiektów przez kamery" nic nie wskazuje na to że jest tam umieszczona jakaś zapasowa bateria :-D . Dobra kończąc moje filozofowanie powiem krótko autorzy Colobota chcieli uprościć nam po prostu życie...
Schocker - 08-02-2010, 19:24

Z drugiej strony, co z tego, że chwytakiem można operować, jeśli w jego zasięgu nie ma innej baterii? ^^ Wtedy i tak trzeba skorzystać z astronauty lub innego transportera. ^^
bbiidduull - 08-02-2010, 19:40

Zrobiłem takie coś ale zanim to coś rozładuje baterie to mnie nerwica łapie :D A turn(360) zanim rozładuje baterie to bym chyba do rana czekał. I chodzi oczywiście o zwykły transporter.

Kod:

extern void object::Rozładowywarka()
{
do
{
motor(1,-1);
}while(energyCell.energyLevel >= 0.2);
message("Rozładowano Ogniwo do poziomu " + energyCell.energyLevel*100+"%");
}

COLOBOT - 08-02-2010, 19:49

A może rozwiązać ten problem od innej strony? Powiedzmy tak:
Parkujemy robota w stacji energetycznej i wyjmujemy mu ogniwo. Wkładamy mu puste i odpalamy program, aby robot odjechał, kiedy ogniwo będzie naładowane tyle ile trzeba.

Sposób oczywiście działa tylko dla zwykłych PowerCell.

bbiidduull - 08-02-2010, 19:57

Ale skąd ja wezmę puste ogniwo? To musiało by szybciej rozładowywać te ogniwo. Próbowałem robić jak ty i obliczałem dystans jaki musi odjechać żeby wrócił w to samo miejsce z odpowiednim poziomem ale to było nie ekonomiczne. A taka ciekawostka: wiecie że robot transporter na kółkach zżera całe ogniwo na dystansie ok 975m ? :D
COLOBOT - 08-02-2010, 20:05

Wystarczy napisać misję z porozrzucanymi pustymi bateriami, ewentualnie pogrzebać w save'ach.
Bartek c++ - 08-02-2010, 20:11

jest jeszcze takie coś działa bez baterii :D
Kod:
while ( true )
turn(1);

ale wtedy sie szybko kręci ;)

Abadon - 08-02-2010, 20:14

975m - hehe do miasta bym nawet nie dojechał, ba do przystanku :D .

Zresztą skąd taki pomysł na szybkie rozładowanie baterii? - przecież nie jest to ekonomiczne :-P ...

bbiidduull - 08-02-2010, 20:18

Ale tu właśnie chodzi żeby zrobić to bez produce... i ma to rozładować a nie specjalną misje robić... :D
FE4R - 09-02-2010, 17:37

Byłoby inteligentnym, gdybyś użył zwykłego ogniwa zamiast atomowego, no i tak jak powiedziałem, polecał Osłaniacza. Jak nie masz to wpisz kod i już...

Cytat:
jest jeszcze takie coś działa bez baterii :D

Kod:
while ( true )
turn(1);


ale wtedy sie szybko kręci ;)

Ale Ty dziwny człowiek jesteś Bartek xD
Oto chodzi, żeby się szybciej kręcił, przy czym z pętlą rekurencyjną nie ma znaczenia czy będzie to turn(1); czy turn(360);.

COLOBOT - 09-02-2010, 18:42

Wg mnie najszybciej będzie się kręcił, jeśli damy mu motor(-1,1); Wtedy mamy pewność, że oba silniki pracują pełną parą. W przypadku turn wydaje mi się, że robot będzie starał się dążyć do odpowiedniego ustawienia, a "odpowiednie ustawienie" wymaga precyzji, która z kolei wymaga dłuższego czasu.
adiblol - 09-02-2010, 22:34

Bartek c++ ma rację, przy małych kątach energia nie jest zabierana z baterii, a do tego skręt jest bardzo szybki. Taki bug ;)
bbiidduull - 10-02-2010, 16:04

Później spróbuje zrobić że będzie zataczał kółko i zobaczę czy będzie dobrze

[ Dodano: 10-02-2010, 20:57 ]
Chyba nie ma lepszego sposoby :/


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