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 |
|
|
Przesunięty przez: Schocker 20-02-2010, 20:50 |
RechargeCell (Czyli naładuj ogniwo) |
Autor |
Wiadomość |
Schocker
Wants cookies!
Twoja ulubiona misja: Hmm... All.
Pomógł: 3 razy Wiek: 22 Dołączył: 31 Maj 2009 Posty: 177 Skąd: Wadowice
|
Wysłany: 01-06-2009, 15:59 RechargeCell (Czyli naładuj ogniwo)
|
|
|
Pierwszy program, na który miałem jakiś pomysł. Dzisiaj postaram się go usprawnić, ale coś mi się dzieje z kompem... Przydało by się go poprawić, był testowany dosłownie chwilę. Może się komuś przyda... Ah, jak zwykle za bardzo się rozpisuję...
Kod: |
extern void object::RechargeCell()
{
point start;
object ogni;
object elek;
start = position;
elek = radar(PowerStation);
ogni = radar(PowerCell);
goto(ogni.position);
grab(InFront);
if (ogni.energyLevel < 1 )
{
goto(elek.position);
}
else
{
drop(InFront);
goto(start);
message("Najblizsze ogniwo jest juz naladowane!", DisplayWarning);
}
while (ogni.energyLevel < 1 )
{
wait(1);
}
if (ogni.energyLevel == 1 )
{
goto(start);
message("Ładowanie zakończone!", DisplayInfo);
}
}
|
|
_________________ But there's no sense crying over every mistake, you just keep on trying 'till you ran out of cake -GlaDOS
|
|
|
|
|
adiblol
Administrator forum FLOSS FTW!
Twoja ulubiona misja: porównywanie formatów audio
Pomógł: 18 razy Dołączył: 21 Kwi 2008 Posty: 1313 Skąd: pokój odsłuchowy
|
Wysłany: 01-06-2009, 16:17
|
|
|
"grab();" daj między "if (ogni.energyLevel < 1 ) { " i "goto(elek.position);". I po "message("Najblizsze ogniwo jest juz naladowane!", DisplayWarning);" daj "return;", to się program zakończy. |
_________________ 1Tbps Project && Telecomix Network
|
|
|
|
|
Schocker
Wants cookies!
Twoja ulubiona misja: Hmm... All.
Pomógł: 3 razy Wiek: 22 Dołączył: 31 Maj 2009 Posty: 177 Skąd: Wadowice
|
Wysłany: 01-06-2009, 16:52
|
|
|
Ah, mój błąd. Właśnie o tym m.in. mówiłem.
Version 2.0! xD
Kod: | extern void object::RechargeCell2()
{
point start;
object cell;
object item;
object odgr;
start = position;
item = radar(PowerStation);
cell = radar(PowerCell);
if( item == null )
{
odgr = radar(PowerCaptor);
}
if ( odgr == null )
{
message("Nie znaleziono elektrowni ani odgromnika!", DisplayError);
return;
}
else
{
if (cell.energyLevel < 1 )
{
goto(cell.position);
grab(InFront);
goto(item.position);
}
else
{
goto(start);
message("Najblizsze ogniwo jest juz naladowane!", DisplayWarning);
return;
}
while (cell.energyLevel < 1 )
{
wait(1);
}
if (cell.energyLevel == 1 )
{
goto(start);
message("Ładowanie zakończone!", DisplayInfo);
}
}
} |
1) Przy pisaniu programu używam raczej nazw angielskich, jakoś tak się przyzwyczaiłem.
2) Teraz, najpierw szuka Elektrowni, gdy nie znajdzie jej, szuka Odgromnika. W wypadku braku i tego, wyświetla wiadomość i kończy program.
3) Ah, jeśli wszystkie ogniwa w pobliżu są naładowane, robot już nie "idzie" do żadnego, tylko po prostu pokręci się przez parę sekund, wyświetli wiadomość i zatrzyma program. |
_________________ But there's no sense crying over every mistake, you just keep on trying 'till you ran out of cake -GlaDOS
|
|
|
|
|
Korniszon
Me Gusta: PPC
Twoja ulubiona misja: Spying...
Pomógł: 1 raz Wiek: 17 Dołączył: 01 Paź 2010 Posty: 108 Skąd: Stamtąd, gdzie ty.
|
Wysłany: 04-10-2010, 13:28
|
|
|
Schocker napisał/a: | extern void object::RechargeCell2()
{
point start;
object cell;
object item;
object odgr;
start = position;
item = radar(PowerStation);
cell = radar(PowerCell);
if( item == null )
{
odgr = radar(PowerCaptor);
}
if ( odgr == null )
{
message("Nie znaleziono elektrowni ani odgromnika!", DisplayError);
return;
}
else
{
if (cell.energyLevel < 1 )
{
goto(cell.position);
grab(InFront);
goto(item.position);
}
else
{
goto(start);
message("Najblizsze ogniwo jest juz naladowane!", DisplayWarning);
return;
}
while (cell.energyLevel < 1 )
{
wait(1);
}
if (cell.energyLevel == 1 )
{
goto(start);
message("Ładowanie zakończone!", DisplayInfo);
}
}
}
|
Program , jeśji wykryje stację energytyczną, wykrzaczy się i wyświetli "Zmienna nie została zainicjowana".
Poprawa:
Kod: | extern void object::RechargeCell3()
{
errmode(0);
point start;
int list[], i=0;
object cell;
object item;
list[i++]=PowerStation;
list[i++]=PowerCaptor;
start = position;
item = radar(list);
cell = radar(PowerCell);
if ( item == null )
{
message("Nie znaleziono elektrowni ani odgromnika!", DisplayError);
return;
}
if( cell == null )
{
message("Nie znaleziono ogniwa elektrycznego",DisplayError);
return;
}
else
{
if (cell.energyLevel < 1 )
{
goto(cell.position);
grab();
goto(item.position);
}
else
{
goto(start);
message("Najblizsze ogniwo jest juz naładowane!", DisplayError);
return;
}
while (load.energyLevel < 1 )
{
wait(0.01);
}
if (load.energyLevel == 1 )
{
goto(start);
message("Ładowanie zakończone!", DisplayInfo);
drop();
}
}
}
|
|
_________________ Nazywajcie mnie KL582 (nick w Minecraft) |
|
|
|
|
Schocker
Wants cookies!
Twoja ulubiona misja: Hmm... All.
Pomógł: 3 razy Wiek: 22 Dołączył: 31 Maj 2009 Posty: 177 Skąd: Wadowice
|
Wysłany: 04-10-2010, 15:19
|
|
|
Korniszon napisał/a: | Schocker napisał/a: | extern void object::RechargeCell2()
{
point start;
object cell;
object item;
object odgr;
start = position;
item = radar(PowerStation);
cell = radar(PowerCell);
if( item == null )
{
odgr = radar(PowerCaptor);
}
if ( odgr == null )
{
message("Nie znaleziono elektrowni ani odgromnika!", DisplayError);
return;
}
else
{
if (cell.energyLevel < 1 )
{
goto(cell.position);
grab(InFront);
goto(item.position);
}
else
{
goto(start);
message("Najblizsze ogniwo jest juz naladowane!", DisplayWarning);
return;
}
while (cell.energyLevel < 1 )
{
wait(1);
}
if (cell.energyLevel == 1 )
{
goto(start);
message("Ładowanie zakończone!", DisplayInfo);
}
}
}
|
Program , jeśji wykryje stację energytyczną, wykrzaczy się i wyświetli "Zmienna nie została zainicjowana".
Poprawa:
Kod: | extern void object::RechargeCell3()
{
errmode(0);
point start;
int list[], i=0;
object cell;
object item;
list[i++]=PowerStation;
list[i++]=PowerCaptor;
start = position;
item = radar(list);
cell = radar(PowerCell);
if ( item == null )
{
message("Nie znaleziono elektrowni ani odgromnika!", DisplayError);
return;
}
if( cell == null )
{
message("Nie znaleziono ogniwa elektrycznego",DisplayError);
return;
}
else
{
if (cell.energyLevel < 1 )
{
goto(cell.position);
grab();
goto(item.position);
}
else
{
goto(start);
message("Najblizsze ogniwo jest juz naładowane!", DisplayError);
return;
}
while (load.energyLevel < 1 )
{
wait(0.01);
}
if (load.energyLevel == 1 )
{
goto(start);
message("Ładowanie zakończone!", DisplayInfo);
drop();
}
}
}
|
|
Dziwne... U mnie nic takiego się nie działo. Ale program jest stary i w ogóle. A na forum mogę wejść tylko z komórki.
Tapnięto z Samsunga Galaxy Spica. |
_________________ But there's no sense crying over every mistake, you just keep on trying 'till you ran out of cake -GlaDOS
|
|
|
|
|
|
Nie możesz pisać nowych tematów Możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Wersja do druku
|
|
| |
|
|
|
|
Polski Portal COLOBOTa © 2008 - 2012 |
|
|