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
Titanium Collector

Wasza ocena
Świetny
60%
 60%  [ 3 ]
Przeciętny
40%
 40%  [ 2 ]
Słaby
0%
 0%  [ 0 ]
Głosowań: 5
Wszystkich Głosów: 5

Autor Wiadomość
Mrocza 


Twoja ulubiona misja: Swobodna na Ziemi
Pomógł: 4 razy
Wiek: 26
Dołączył: 29 Sie 2011
Posty: 249
Skąd: Lublin
Wysłany: 29-08-2011, 12:16   Titanium Collector

To mój program. Co o nim sądzicie?

Titanium.txt
Wersja w notatniku.
Pobierz Plik ściągnięto 131 raz(y) 4,75 KB

Ostatnio zmieniony przez Mrocza 02-12-2011, 16:36, 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: 29-08-2011, 19:43   

Nie chce mi sie calego komentowac bo generalnie jest dobrze, ale przydaloby sie nie wylaczac programu np kiedy rudy nie ma - co jesli korzystasz z kopalni i jeszcze nie wydobyla?
_________________
 
 
     
Mrocza 


Twoja ulubiona misja: Swobodna na Ziemi
Pomógł: 4 razy
Wiek: 26
Dołączył: 29 Sie 2011
Posty: 249
Skąd: Lublin
Wysłany: 31-08-2011, 07:06   

Poprawiłem już to o czym napisałeś, a dodatkowo dodałem możliwość uruchomienia programu z nieopróżnionym chwytakiem. Wyrzuciłem też zmienną err
 
 
     
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: 31-08-2011, 18:42   

O, nawet jestes chetny by wdrazac w zycie komentarze :)

Warunek, zeby robot szedl sie ladowac przy sztywnej granicy nie ma wiele sensu, gdyz czasem ruda moze byc bardzo daleko i np. nie dojedziesz na polowie ogniwa, wiec fajnym pomyslem jest liczenie, czy warto sie ladowac.

Jestem ciekaw innych twoich programow, bo masz naprawde kilka fajnych pomyslow.
_________________
 
 
     
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: 31-08-2011, 20:53   

Czyżby rodziła się konkurencja dla Ciebie Berserker?
_________________
- 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: 31-08-2011, 22:10   

Moze sie doczekam drugiego pipoka, ktory umial mi wszystko wygarnac :) Ale czuje, ze bede wreszcie mial z kim dyskutowac.
_________________
 
 
     
Mrocza 


Twoja ulubiona misja: Swobodna na Ziemi
Pomógł: 4 razy
Wiek: 26
Dołączył: 29 Sie 2011
Posty: 249
Skąd: Lublin
Wysłany: 31-08-2011, 23:06   

Napisałem też program toważyszący dla drugiego robota, donosi on tylko rudę jak najbliżej huty wtedy robot z programem TitaniumCollector pracuje bardzo szybko. Testowałem cały układ przez 6 godzin dzięki programowi do niszczenia tytanu działem. Niestety na razie nie mogę wrzucić bo nie mam neta na kompie (pisze z avilli).

"towarzyszący", nie moglem sie powstrzymac //Berek
Ostatnio zmieniony przez Berserker 31-08-2011, 23:16, 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: 31-08-2011, 23:21   

Ja lubie miec w bazie do kazdej funkcji po jednym robocie (tytan, ogniwa nuklearne, ogniwa elektryczne i inne), wiec ten robot musialby dla mnie maksymalnie w terenie pracowac - miec odpowiednie reakcje na obecnosc zagrozenia etc.
_________________
 
 
     
Mrocza 


Twoja ulubiona misja: Swobodna na Ziemi
Pomógł: 4 razy
Wiek: 26
Dołączył: 29 Sie 2011
Posty: 249
Skąd: Lublin
Wysłany: 31-08-2011, 23:47   

Chodzi ci o uciekanie przed mrówkami? Nie mam wpływu na robota jeżeli przemieszcza się z punktu A do punktu B używając instrukcji goto. prościej byłoby zaprogramować robota obronnego dla transporterów.
 
 
     
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: 01-09-2011, 12:37   

Myslalem o wczesniejszym sprawdzeniu, czy jest w poblizu zagrozenie i jesli jest nie podejmowac w ogole zadnych dzialan, tylko np. za pomoca klas wyslac robota ktory by je zneutralizowal (np oslaniacz).
_________________
 
 
     
Mrocza 


Twoja ulubiona misja: Swobodna na Ziemi
Pomógł: 4 razy
Wiek: 26
Dołączył: 29 Sie 2011
Posty: 249
Skąd: Lublin
Wysłany: 02-09-2011, 16:17   

To jest nowa wersja mojego programu wraz ze wspomagaczem i prostą obroną.

[ Dodano: 04-09-2011, 12:43 ]
Nadszedł wrzesień. Forum zamilkło.

Titanium_v2.txt
Druga wersja programu.
Pobierz Plik ściągnięto 60 raz(y) 5,43 KB

Titaore.txt
Program wspomagający.
Pobierz Plik ściągnięto 46 raz(y) 3,76 KB

GrabersDefender.txt
wersja BETA
Pobierz Plik ściągnięto 53 raz(y) 1,3 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: 25-09-2011, 14:23   

Ostatnio nie mam czasu i checi by siedziec w Colobocie, ale chetnie kiedys przejrze twoje programy.
_________________
 
 
     
Mrocza 


Twoja ulubiona misja: Swobodna na Ziemi
Pomógł: 4 razy
Wiek: 26
Dołączył: 29 Sie 2011
Posty: 249
Skąd: Lublin
Wysłany: 25-09-2011, 17:05   

Dzięki za zainteresowanie. Osobiście też ostatnio nie grałem w ColoBoT'a.

[ Dodano: 01-12-2011, 17:55 ]
Kod:


// TitaniumCollector 01.12.11
// Created by MROCZA

extern void object::TitaniumCollector()
{
   
    object  item;                     // deklaracje zmiennych
    object  convert;
    point   flag (0,0);
    int     i = 0;
   
    errmode(0);                       // błędoodporność
   
    convert = radar(Converter);              // znajdź chutę
    if ( convert == null )                   // jeśli jej nie ma
    {
        message("Brak huty",DisplayError);   // wyświetl wiadomość
        return;                              // i przerwij program
    }
   
    recharge();                              // naładuj się
   
    while (true)                             // powtarzaj w nieskończoność
    {
       
        if(load == null or load.category != TitaniumOre)  // jeśli nie trzymasz rudy
        {                                                 //   lub nie trzymasz nic
           
            if(load != null and load.category != TitaniumOre)  // jeśli to co trzymasz
            {                                                  //   nie jest rudą
                goto(space(position));                         //   idź na wolne miejsce
                drop();                                        //   i zostaw to
            }
           
            while(true)                                        // powtarzaj w pętli
            {
                item = radar(TitaniumOre);                     // szukaj rudy
                if ( item != null ) break;                     // jeśli znajdziesz kontynuuj
                if ( i % 100 == 0 ) message("Nie znaleziono więcej tytanu");
                i++ ;                                          // jeśli nie znajdziesz
                wait(0.1);                                     // po prostu czekaj
            }
           
            if(goto(item.position) == 211)                 // udaj się do rudy
            {
                message("Ruda niedostępna",DisplayError);  // jeśli się nie da
                return;                                    // przerwij program
            }
           
            if( grab() != 0 ) continue;    // podnieś tę rudę, jeśli nie ma czego podnieść
        }                                  // szukaj od nowa
       
        while(true)
        {
            if (goto(convert.position) == 000 ) break;     // zanieś rudę do huty
            if (goto(convert.position) == 212 ) continue;  // jeśli się nie da
            message("Huta niedostępna",DisplayError);      // wyświetl wiadomość
            return;                                        // i przerwij program
        }
       
        errmode(1);  // teraz uwaga na błędy!
       
        item = radar(Titanium,0,59,0,3);   // szukaj tytanu w hucie
        if ( item == null )                // jeśli go tam nie ma
        {
            drop();                        // zostaw tę rudę
            move(-2);                      // dosuń się
            wait(10);                      // i zaczekaj
        }
        else                               // jeśli jest tam tytan
        {
            turn(60);                      // obróć się w prawo  //
            drop();                        // upuść rudę          /
            turn(-60);                     // obróć się w lewo    //
            grab();                        // podnieś tytan       //
            turn(-60);                     // obróć się w lewo    ///
            drop();                        // upuść go            /// wymień tytan na rudę
            turn(120);                     // obróć się w prawo   ///
            grab();                        // podnieś rudę        //
            turn(-60);                     // obróć się w lewo    //
            drop();                        // upuść rudę          /
            turn(-60);                     // obróć się w lewo   //
            grab();                        // podnieś tytan
           
            errmode(0);   // błędoodporność
           
            if ( flag.x == 0 )  // jeśli wcześniej nie określono punktu składowania
            {
                goto(space(position,6,50,6));  // znajdź wolne miejsce
                flag = position;               // i ustal ten punkt
            }
            else                // jeśli punkt składowania już istnieje
            {
                while(goto(flag) == 212) wait(1);   // idź  do niego
            }
           
            stock();  // składuj tytan
           
        }
       
        recharge();   // naładuj się
       
    }
}

///////////////////////////////////////////////////////////////////////////

void object::recharge()
{
    object item;
   
    errmode(0);
   
    if (energyCell.category == PowerCell)
    {
        if ( energyCell.energyLevel < 0.3 )
        {
            item = radar(PowerStation);
            if(item != null)
            {
               
                while(true)
                {
                    if (goto(item.position) == 000 ) break;
                    if (goto(item.position) == 212 ) continue;
                    message("Stacja energetyczna niedostępna",DisplayError);
                    return;
                }
               
                while( energyCell.energyLevel < 1 ) wait(0.1);
            }
        }
    }
   
   
    else
    {
       
        if ( energyCell.energyLevel < 0.05 )
        {
            float min = 0;
            int   i  =  0;
           
            while (true)
            {
                item = radar(NuclearCell,0,360,min,1000);
               
                while(true)
                {
                    if ( item != null ) break;
                    if ( i % 100 == 0 ) message("Nie znaleziono więcej ogniw atomowych");
                    item = radar(NuclearCell);
                    i++ ;
                    wait(0.1);
                }
               
                if (item.energyLevel >= 0.5) break;
                min = distance (item.position, position) + 0.02;
            }
           
           
            while(true)
            {
                if (goto(item.position) == 000 ) break;
                if (goto(item.position) == 212 ) continue;
                message("Ogniwo atomowe niedostępne",DisplayError);
                return;
            }
           
            errmode(1);
           
            grab (InFront);
            goto (space(position));
            drop (Behind);
            grab (EnergyCell);
            drop (InFront);
            grab (Behind);
            drop (EnergyCell);
           
        }
       
    }
   
}

//////////////////////////////////////////////////////////////////////

void object::stock()
{
    object item;
    float  angle;
    int    i, j;
    point   flag (0,0);
   
    errmode(1);
   
    item = radar(Converter);
   
    if(direction(item.position) > 0)
    {
        turn(direction(item.position)-180);
    }
    else
    {
        turn(direction(item.position)+180);
    }
   
    jet(1);
    wait(0.5);
    move(4);
    jet(-1);
    wait(0.6);
   
    errmode(0);
   
    while(true)
    {
        angle = 0;
       
        if(category == WingedGrabber) j=9;
        else                          j=7;
       
        for(i=0; i<j; i++)
        {
            if( i % 2 == 0 )
            {
                item = radar(Titanium,angle,30,0,3);
                if ( item == null )
                {
                    turn(angle);
                    while(drop() == 106) wait(0.1);
                    turn(-180 - angle);
                    if(j == 7) move(3);
                    return;
                }
               
                angle = angle / -1 + 40;
            }
           
            else
            {
                item = radar(Titanium,angle,30,0,3);
                if ( item == null )
                {
                    turn(angle);
                    while(drop() == 106) wait(0.1);
                    turn(180 - angle);
                    if(j == 7) move(3);
                    return;
                }
               
                angle = angle / -1;
            }
           
        }
       
    }
   
}


//////////////////////////////////////////////////////////////////////




Oto program z poprawkami.

[ Dodano: 02-12-2011, 07:07 ]
Teraz tak czytam i widzę parę niedociągnięć:
    W funkcji stock() chyba niepotrzebnie dodałem zmienną point flag.
    W jednej z pętli if nie potrzebnie dodałem and load.category =! TitaniumOre.

Dlaczego nikt się nie zainteresuje? :-(
 
 
     
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: 02-12-2011, 11:17   

Dzisiaj po 21 może go uruchomie, wiec możesz się cieszyc;)
_________________
 
 
     
Knight_in_Fire 


Wiek: 27
Dołączył: 29 Sie 2010
Posty: 19
Skąd: Rybnik
Wysłany: 02-12-2011, 18:49   

W stosunku do wbudowanych programów jest na pewno lepszy, szuka konkretnego miejsca na tytan, tworząc takie kwiatuszki tytanowe. Testowałem na czwartej misji Nowej Ziemi.
 
     
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