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
CollectTitaniumOre
Autor Wiadomość
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: 09-10-2010, 11:42   CollectTitaniumOre

A oto program:
Kod:
extern void object::CollectTitaniumOre()
{
    while(true)
    {
        if(energyCell.energyLevel<0.4) lado();
        ruda();
        huta();
        tytan();
        spa();
    }
}
void object::ruda()
{
    object item;
    while((item=radar(TitaniumOre))==null)
    {
        Message("Nie znaleziono rudy. Czekam.");
        wait(1);
    }
    mygoto(item.position);
    grab();
}
void object::huta()
{
    object conver;
    while((conver=radar(Converter))==null)
    {
        Message("Nie znaleziono huty. Czekam.");
        wait(1);
    }
    mygoto(conver.position);
    drop();
    move(-2.5);
}
void object::tytan()
{
    object titan;
    Message("Czekam na wytworzenie tytanu");
    do
    {
        titan=radar(Titanium,0,45,0,5);
    }
    while(titan==null);
    mygoto(titan.position);
    grab();
}
void object::spa()
{
    Message("Idę do wolnej pozycji");
    mygoto(space(position));
    errmode(0);
    drop();
    while(load!=null)
    {
        Message("Upuszczenie tytanu nie powiodło się");
        mygoto(space(position));
        drop();
    }
    Message("Upuszczenie tytanu powiodło się.");
    errmode(1);
}
void object::lado()
{
    Message("Niski poziom energii. Szukam zasoby energytyczne.");
    while(!A() and !B())
    {
        Message("Uwaga. Nie znaleziono zasobów energytycznych.");
        wait(1);
    }
    Message("Ładowanie zakończone");
}
bool object::A()
{
    object station;
    int sta[];
    sta[0]=PowerStation;
    sta[1]=PowerCaptor;
    station=radar(sta);
    if(station!=null)
    {
        mygoto(station.position);
        while(energyCell.energyLevel<1);
        return true;
    }
    return false;
}
bool object::B()
{
    object cell=radar(PowerCell);
    if(cell!=null)
    {
        if(cell.energyLevel>0.75)
        {
            mygoto(cell.position);
            grab();
            drop(Behind);
            grab(EnergyCell);
            drop();
            grab(Behind);
            drop(EnergyCell);
            return true;
        }
    }
    return false;
}
void object::mygoto(point pos)
{
    errmode(0);
    while(goto(pos)!=0);
    errmode(1);
}
void object::Message(string msg)
{
    message("(RT) "+category+": "+msg);
}

Program działa kojelno etapami:

    extern void object::TitaniumC()
    {

      while(true)
      {

        :arrow: Sprawdza stan baterii
        :arrow: Szuka rudę i bierze ją
        :arrow: Szuka huty, jedzie tam, i zostawia rudę
        :arrow: Czeka na tytan i go bierze
        :arrow: Zostawia tytan w wolnym miejscu

      }

    }


UWAGA: Program był testowany i działa.
_________________
Nazywajcie mnie KL582 (nick w Minecraft)
Ostatnio zmieniony przez Korniszon 14-01-2011, 13:42, w całości zmieniany 6 razy  
 
     
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-10-2010, 11:52   

Proszę o wklejenie z wcięciami bo tak nic z tego nie rozumiem.
1. zapisz program z poziomu Colobota
2. otwórz odpowiedni plik: ścieżka\do\colobota\program\nazwa_pod_jaką_zapisałeś.txt
3. skopiuj i wklej na forum w tagu [ code ]
_________________
1Tbps Project && Telecomix Network

 
 
     
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: 09-10-2010, 11:58   

Dzięki

Albo:
scieżka_do_colobota/savegame/nazwa_użytkownika/Program/nazwa_programu.txt
_________________
Nazywajcie mnie KL582 (nick w Minecraft)
Ostatnio zmieniony przez Korniszon 10-10-2010, 09:26, 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-10-2010, 12:07   

Kod:
void object::mygoto(point pos)
{
    errmode(0);
    while(goto(pos)!=0);
    goto(pos);
    errmode(1);
}

Bez sensu, wykonujesz goto() 2 razy.

Kod:
    while(goto(space(position))!=0)

Wypadaloby wlaczyc moze errmode(0)...

Bardzo mi sie podoba twoj uroczy angielski, zwlaszcza te wstawki "No find...", nie ma to jak poszanowanie dla gramatyki :) Poza tym, po co te wszystkie message()? To ja musze wiedziec co moj robot wlasnie robi? :o
_________________
 
 
     
Simbax 
Mod


Twoja ulubiona misja: Wszystkie na Krystalii
Pomógł: 6 razy
Wiek: 22
Dołączył: 07 Sie 2009
Posty: 473
Skąd: z Leszna
Wysłany: 09-10-2010, 13:34   

@Korniszon Po co się z ang. bawisz, mieszkamy w końcu w Polsce i swój język mamy. Sam używam ang. nazw do zmiennych itd. Ale "mesycze" wypadałoby już po polsku...
_________________
http://projektsimbax.blogspot.com/ <- Taki sobie blog
 
     
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: 10-10-2010, 09:30   

@Simbax Poprawiłem
Simbax napisał/a:
mesycze

Pisze się message'e

@Berserker Poprawiłem. A z tymi message'ami: chciałem sobie żeby mi wyświetlało. Dzięki temu wiem co teraz robot robi. :D
_________________
Nazywajcie mnie KL582 (nick w Minecraft)
 
     
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-10-2010, 14:19   

Jakby uruchomić ten program na kilku robotach to by wiadomości od nich tak szybko były zastępowane nowymi że zanim by którąś przeczytał to by znikła z ekranu.
 
     
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-10-2010, 15:20   

Dla mnie jak robot ma wyeliminowac osy to cecha dobrego programu jest to, ze uruchamiam ten program i o nim zapominam, a chwile pozniej tych os nie ma. Jakby mi spamowal wiadomosciami to bym go w koncu wylaczyl i sam wybil te osy:)
_________________
 
 
     
Simbax 
Mod


Twoja ulubiona misja: Wszystkie na Krystalii
Pomógł: 6 razy
Wiek: 22
Dołączył: 07 Sie 2009
Posty: 473
Skąd: z Leszna
Wysłany: 11-10-2010, 16:52   

Korniszon napisał/a:
Pisze się message'e


OK, dzięki za informację. Właśnie się tak zastanawiałem jak to napisać ;-)
_________________
http://projektsimbax.blogspot.com/ <- Taki sobie blog
 
     
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: 23-10-2010, 08:59   

@Apus & Berserker:
Jak chcecie, mogę wykasować te message'e "spamowe"(jak to Berserker napisał) ;)
_________________
Nazywajcie mnie KL582 (nick w Minecraft)
 
     
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: 23-10-2010, 12:48   

Nie tyle, ze chcemy zebys dla nas je wykasowal tylko, zebys nauczyl sie radzic sobie bez nich :)
Zreszta nie wiem jak ty to wytrzymujesz:
Kod:
 while(goto(space(position))!=0)
    {
        mesage("Wolna pozycja jest zablokowana.");
        wait(1);
    }

Co sekunde dowiadujesz sie, ze nie ma robot gdzie pojsc, ciebie w ogole by to obchodzilo? :P
_________________
 
 
     
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: 23-10-2010, 13:59   

Najlepiej napisać funcję debug(string msg), która odwoływałaby się do message(...) dodając prefiks - nazwę robota, ale gdybyśmy nie chcieli oglądać komunikatów to można by zawartość funkcji debug(...) wykomentować.
_________________
1Tbps Project && Telecomix Network

 
 
     
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: 24-10-2010, 11:35   

@Berserker:
Dobra, dobra, ja umiem posługiwać się bez nich, ale ten program tak ma i już. :D :) :>
_________________
Nazywajcie mnie KL582 (nick w Minecraft)
 
     
Wyświetl posty z ostatnich:   

Wersja do druku

Skocz do:  

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