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
Forum - Polski Portal COLOBOTa
Strona głównaStrona główna UżytkownicyUżytkownicy GrupyGrupy StatystykiStatystyki


Poprzedni temat «» Następny temat
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 :mrgreen:

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ć? :lol:
_________________
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ć :mrgreen:

[ 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" :mrgreen:
 
     
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ę. :mrgreen:
 
     
Wyświetl posty z ostatnich:   
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

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Polski Portal COLOBOTa © 2008 - 2012