Prosty programik baterii atomowej |
Autor |
Wiadomość |
William
Dołączył: 09 Maj 2011 Posty: 4 Skąd: nieJestemBotem
|
Wysłany: 09-05-2011, 22:46 Prosty programik baterii atomowej
|
|
|
Tak jak to jest w wersji tytanu, tak ja mam z uranem
Kod: | extern void object::CollectPowerCell3()
{
// 1) Definicja zmiennej
object item; // informacja o obiekcie
while (true) // powtarzaj w nieskończoność
{
// 2) Idź do rudy uranu i podnieś ją
item = radar(UraniumOre);// znajdź rudę uranu
goto(item.position); // idź do pozycji
grab(); // podnieś porcję rudy
// 3) Idź do elektrowni i zostaw rudę
item = radar(PowerStation); // znajdź elektrownię
goto(item.position); // idź do pozycji
drop(); // zostaw rudę
move(-2.5); // cofnij się o 2,5 m
// 4) Poczekaj na przetopienie rudy i zabierz baterię
do
{
wait(1); // poczekaj na kostkę baterii
item = radar(PowerCell, 0, 45, 0, 5);
}
while ( item == null );
goto(item.position);
grab(); // weź ją
// 5) Idź do wolnego miejsca i zostaw ją
goto(space(position)); // idź do wolnego miejsca
drop(); // zostaw baterię
// Naładuj ogniwo elektryczne, jeśli jest w połowie zużyte
if ( energyCell.energyLevel < 0.5 )
{ // jeśli tak:
item = radar(PowerStation);
if ( item != null ) // czy znaleziono elektrownię?
{
goto(item.position); // idź tam
while ( energyCell.energyLevel < 1 )
{ // do czasu naładowania:
wait(1); // czekaj
}
}
}
}
} |
Jak coś nie działa to pisać. Mi jak coś to działa
Załączam plik notatnika z tym programem.
xdd.txt
|
Pobierz Plik ściągnięto 48 raz(y) 1,4 KB |
|
|
|
|
|
Berserker
Dark Ness
Twoja ulubiona misja: Ofrenia
Pomógł: 16 razy Wiek: 24 Dołączył: 24 Mar 2009 Posty: 496 Skąd: Bigos
|
Wysłany: 09-05-2011, 23:10
|
|
|
Alleluja!
Czas na (wyjatkowa lagodna) krytyke.
Kod: | // 3) Idź do elektrowni i zostaw rudę
item = radar(PowerStation); // znajdź elektrownię
goto(item.position); // idź do pozycji
drop(); // zostaw rudę
move(-2.5); // cofnij się o 2,5 m
|
Ruda uranu raczej wedruje do elektrowni atomowej, a nie zwyklej.
Od elektrowni atomowej trzeba sie cofnac na wiecej niz 2,5m, zalecane 4.
Kod: | do
{
wait(1); // poczekaj na kostkę baterii
item = radar(PowerCell, 0, 45, 0, 5);
}
while ( item == null );
|
radar() nie wykryje gotowego ogniwa elektrycznego w jakiejkolwiek elektrowni. |
_________________
|
|
|
|
|
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: 09-05-2011, 23:11
|
|
|
William napisał/a: | Mi jak coś to działa | Eeeee...?
Cytat: | // 2) Idź do rudy uranu i podnieś ją
(...)
item = radar(PowerStation); // znajdź elektrownię
(...)
item = radar(PowerCell, 0, 45, 0, 5); |
I to ma szansę działać? |
_________________ 1Tbps Project && Telecomix Network
|
|
|
|
|
Raptor
Clever Girl
Twoja ulubiona misja: Raptorowanie
Pomógł: 4 razy Wiek: 24 Dołączył: 26 Cze 2010 Posty: 432 Skąd: Isla Nublar
|
Wysłany: 09-05-2011, 23:16
|
|
|
Fail!
1. Nazwa programu winna być CollectNuclearCell.
2. UraniumOre zanosisz do NuclearPlant, a nie do PowerStation.
3. Nie czekasz za pomocą pętli, aż ogniwo Ci się wytworzy, tylko nakazujesz czekać ok. 33 sekund. W CoLoBoT jest błąd, który uniemożliwia wykrycie radarem ogniwa znajdującego się w NuclearPlant.
4. To nic nowego.
EDIT: Merde! Znowu się spóźniłem! |
_________________ - Stężenie czekolady we krwi: 93‰
- Ja to bym zjadł jeszcze batona...
|
Ostatnio zmieniony przez Raptor 10-05-2011, 10:42, w całości zmieniany 1 raz |
|
|
|
|
Berserker
Dark Ness
Twoja ulubiona misja: Ofrenia
Pomógł: 16 razy Wiek: 24 Dołączył: 24 Mar 2009 Posty: 496 Skąd: Bigos
|
Wysłany: 09-05-2011, 23:58
|
|
|
Cytat: | 3. Nie czekasz za pomocą pętli, aż ogniwo Ci się wytworzy, tylko nakazujesz czekać ok. 33 sekund. W CoLoBoT jest błąd, który uniemożliwia wykrycie radarem ogniwa znajdującego się w NuclearPlant. |
Dziwne, ja tego nie zauwazylem. Po prostu dawalem warunek w stylu while(p.load == p.energyCell) {...}, bo nie chcialo mi sie sprawdzac, czy odpowiada za to load czy energyCell. Swoja droga, chyba w PowerPlant inaczej jest niz w NuclearPlant.
Cytat: | 1. Nazwa programu winna być CollectNuclearCell. |
Czepiamy sie nazw czy bledow w skladni? |
_________________
|
|
|
|
|
William
Gość
|
Wysłany: 10-05-2011, 09:26
|
|
|
Berserker napisał/a: | Alleluja!
Czas na (wyjatkowa lagodna) krytyke.
Kod: | // 3) Idź do elektrowni i zostaw rudę
item = radar(PowerStation); // znajdź elektrownię
goto(item.position); // idź do pozycji
drop(); // zostaw rudę
move(-2.5); // cofnij się o 2,5 m
|
Ruda uranu raczej wedruje do elektrowni atomowej, a nie zwyklej.
Od elektrowni atomowej trzeba sie cofnac na wiecej niz 2,5m, zalecane 4.
Kod: | do
{
wait(1); // poczekaj na kostkę baterii
item = radar(PowerCell, 0, 45, 0, 5);
}
while ( item == null );
|
radar() nie wykryje gotowego ogniwa elektrycznego w jakiejkolwiek elektrowni. |
O_o No co ty! Kurde dobra uwaga! Serio, to nie sarkazm |
|
|
|
|
William
Dołączył: 09 Maj 2011 Posty: 4 Skąd: nieJestemBotem
|
Wysłany: 10-05-2011, 09:28
|
|
|
^ ^
| |
Sorry, zapomniałem się zalogować
[ Dodano: 10-05-2011, 09:52 ]
Kod: | extern void object::CollectPowerCell3()
{
// 1) Definicja zmiennej
object item; // informacja o obiekcie
while (true) // powtarzaj w nieskończoność
{
// 2) Idź do rudy uranu i podnieś ją
item = radar(UraniumOre);// znajdź rudę uranu
goto(item.position); // idź do pozycji
grab(); // podnieś porcję rudy
// 3) Idź do elektrowni i zostaw rudę
item = radar(NuclearPlant); // znajdź elektrownię atomową
goto(item.position); // idź do pozycji
drop(); // zostaw rudę
move(-2.5); // cofnij się o 2,5 m
// 4) Poczekaj na przetopienie rudy i zabierz baterię
do
{
wait(1); // poczekaj na kostkę baterii
item = radar(PowerCell, 0, 45, 0, 5);
}
while ( item == null );
[b]move(2,5); // przybliż się o 2,5 m[/b]
grab(); // weź ją
// 5) Idź do wolnego miejsca i zostaw ją
goto(space(position)); // idź do wolnego miejsca
drop(); // zostaw baterię
// Naładuj ogniwo elektryczne, jeśli jest w połowie zużyte
if ( energyCell.energyLevel < 0.5 )
{ // jeśli tak:
item = radar(PowerStation);
if ( item != null ) // czy znaleziono elektrownię?
{
goto(item.position); // idź tam
while ( energyCell.energyLevel < 1 )
{ // do czasu naładowania:
wait(1); // czekaj
}
}
}
}
}
|
Czemu nie chce u mnie działać komenda pogrubiona(move(2,5);)
U was działa?
A tu taki programik który jest tylko do czasu położenia rudy do elektrowni.
Kod: | extern void object::CollectPowerCell3()
{
// 1) Definicja zmiennej
object item; // informacja o obiekcie
while (true) // powtarzaj w nieskończoność
{
// 2) Idź do rudy uranu i podnieś ją
item = radar(UraniumOre);// znajdź rudę uranu
goto(item.position); // idź do pozycji
grab(); // podnieś porcję rudy
// 3) Idź do elektrowni i zostaw rudę
item = radar(NuclearPlant); // znajdź elektrownię atomową
goto(item.position); // idź do pozycji
drop(); // zostaw rudę
move(-2.5); // cofnij się o 2,5 m
}
} |
[ Dodano: 10-05-2011, 10:00 ]
Kod: | extern void object::MakeBot()
{
// 1) Definicja zmiennej
object item; // informacja o obiekcie
while (true) // powtarzaj w nieskończoność
{
// 2) Idź do rudy uranu i podnieś ją
item = radar(Titanium);// znajdź tytan
goto(item.position); // idź do pozycji
grab(); // podnieś porcję rudy
// 3) Idź do warsztatu i zostaw tytan
item = radar(BotFactory); // znajdź warsztat
goto(item.position); // idź do pozycji
drop(); // zostaw tytan
move(-3); // cofnij się o 3 m
// Naładuj ogniwo elektryczne, jeśli jest w połowie zużyte
if ( energyCell.energyLevel < 0.5 )
{ // jeśli tak:
item = radar(PowerStation);
if ( item != null ) // czy znaleziono elektrownię?
{
goto(item.position); // idź tam
while ( energyCell.energyLevel < 1 )
{ // do czasu naładowania:
wait(1); // czekaj
}
}
}
}
}
|
Bierze tytan i dostarcza do warsztatu! Działa 100% |
|
|
|
|
Raptor
Clever Girl
Twoja ulubiona misja: Raptorowanie
Pomógł: 4 razy Wiek: 24 Dołączył: 26 Cze 2010 Posty: 432 Skąd: Isla Nublar
|
Wysłany: 10-05-2011, 10:49
|
|
|
Berserker napisał/a: | Cytat: | 1. Nazwa programu winna być CollectNuclearCell. |
Czepiamy sie nazw czy bledow w skladni? |
Nazwa też jest ważna!
Cytat: | Dziwne, ja tego nie zauwazylem. Po prostu dawalem warunek w stylu while(p.load == p.energyCell) {...}, bo nie chcialo mi sie sprawdzac, czy odpowiada za to load czy energyCell. Swoja droga, chyba w PowerPlant inaczej jest niz w NuclearPlant. |
Cieszę się, że taki cep z programowania, jak ja, coś uświadomił ... |
_________________ - Stężenie czekolady we krwi: 93‰
- Ja to bym zjadł jeszcze batona...
|
|
|
|
|
Berserker
Dark Ness
Twoja ulubiona misja: Ofrenia
Pomógł: 16 razy Wiek: 24 Dołączył: 24 Mar 2009 Posty: 496 Skąd: Bigos
|
Wysłany: 10-05-2011, 15:02
|
|
|
Cytat: | Czemu nie chce u mnie działać komenda pogrubiona(move(2,5);)
U was działa? |
W programowaniu cyfry zmiennoprzecinkowe oznacza sie kropka, wiec zmien "2,5" na "2.5".
@up
Specjalnie sprawdzilem.
Kod: |
extern void object::Test()
{
object p = radar(UraniumOre);
goto(p.position);
grab();
p = radar(NuclearPlant);
goto(p.position);
drop();
move(-4);
while(true)
{
if(p.load != null && p.load.category == NuclearCell)
{
message("1");
break;
}
if(p.energyCell != null && p.energyCell.category == NuclearCell)
{
message("2");
break;
}
}
move(3);
grab();
}
|
Odpal ten program, dziala zarowno dla PowerPlant jak i NuclearPlant, za kazdym razem wyswietla 2.
Odrazu, zeby zaden idiota sie nie czepial, to nie jest pelny program tylko maly programik do testow. |
_________________
|
|
|
|
|
William
Dołączył: 09 Maj 2011 Posty: 4 Skąd: nieJestemBotem
|
Wysłany: 10-05-2011, 16:58
|
|
|
O, dzięki Teraz programik działa!
[ Dodano: 10-05-2011, 17:04 ]
Ok, załączam prawidłowy program tej elektrowni itd.
Działa na 1000%
Program działa.txt
|
Pobierz Plik ściągnięto 50 raz(y) 1,43 KB |
|
|
|
|
|
Apus
Twoja ulubiona misja: 2 pierwsze na Wulkanii
Pomógł: 3 razy Wiek: 19 Dołączył: 09 Kwi 2010 Posty: 246 Skąd: ze wsi
|
Wysłany: 10-05-2011, 17:21
|
|
|
Jest sposób żeby wykryć ogniwo w elektrowni atomowej.
Nie szukamy ogniwa stojącego na ziemi. Po prostu budynki do których się cos wkłada (np. ResearchCenter, NuclearPlant, DefenseTower) mają też 'miejsce na ogniwo elektryczne' do którego nie zawsze wkładamy ogniwo, tylko np. uran. A więc szukamy w miejscu na ogniwo (.EnergyCell).
A więc kod:
Kod: | object plant;
plant = radar(NuclearPlant); //(możemy użyć zmiennej z wcześniejszej części programu
while(plant.EnergyCell != NuclearCell) //jeśli ogniwo gotowe, pomijamy pętlę
{
wait(1);
}
move(4);
grab; |
|
|
|
|
|
Berserker
Dark Ness
Twoja ulubiona misja: Ofrenia
Pomógł: 16 razy Wiek: 24 Dołączył: 24 Mar 2009 Posty: 496 Skąd: Bigos
|
Wysłany: 10-05-2011, 17:29
|
|
|
@up
No coz. zle, zle, zle. Poza tym juz dalem kod |
_________________
|
|
|
|
|
William
Dołączył: 09 Maj 2011 Posty: 4 Skąd: nieJestemBotem
|
Wysłany: 10-05-2011, 20:32
|
|
|
@up
A ja dałem po prostu bez komendy "radar" |
|
|
|
|
krzys_h
Twoja ulubiona misja: Wszystkie :)
Pomógł: 3 razy Wiek: 20 Dołączył: 12 Gru 2010 Posty: 255 Skąd: Łódź
|
Wysłany: 10-05-2011, 21:02
|
|
|
@Apus: Colobot jest czuły na wielkość znaków: powinno być energyCell zamiast EnergyCell (EnergyCell to parametr grab oznaczający ogniwo włożone w robocie). Poza tym po grab muszą być nawiasy |
_________________ Gość, cieszysz się, że skontaktowaliśmy się z EPSITEC? |
|
|
|
|
Apus
Twoja ulubiona misja: 2 pierwsze na Wulkanii
Pomógł: 3 razy Wiek: 19 Dołączył: 09 Kwi 2010 Posty: 246 Skąd: ze wsi
|
Wysłany: 11-05-2011, 15:50
|
|
|
krzys_h napisał/a: | @Apus: Colobot jest czuły na wielkość znaków: powinno być energyCell zamiast EnergyCell (EnergyCell to parametr grab oznaczający ogniwo włożone w robocie). Poza tym po grab muszą być nawiasy |
Co do energyCell to nie wiedziałem jak jest dokładnie, a z grab() to mój błąd, czasami po prostu nie myślę. |
|
|
|
|
|