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: 02-12-2011, 22:15   

Nowa ziemia? Czyli używałeś robota nurka?
Nie testowałem na nim tego programu!
Działało bez błędó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: 03-12-2011, 00:13   

Wlasnie: wypieprz fragment recharge() dla robota nurka, on sobie baterii nie zmieni.
_________________
 
 
     
Bartek c++ 


Twoja ulubiona misja: Tropica - Czas na atak
Pomógł: 6 razy
Wiek: 20
Dołączył: 07 Lip 2009
Posty: 390
Wysłany: 07-12-2011, 06:28   

Program idealny! :D Po włączeniu go na robocie nie wyskakiwalo zadne error tylko normalnie działał(nie to co przy programach mojej produkcji :P ).
_________________

 
     
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: 07-12-2011, 13:24   

Nareszcie ktoś docenił. Tylko mógłbyś jeszcze napisać co poprawić.
 
 
     
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: 07-12-2011, 20:30   

@up Jak czekales na jakies pochwaly to mogles napisac, ja tam jestem przestawiony na sadzenie kopow w tylek za kazdy blad i oczekuje tego tez od innych, ale wazelina tez jest dostepna :>

Co do programu. Dziwnie reaguje jak sie zablokuje stacje energetyczna, swoja droga rozladowal mi sie wtedy ten bot :) Pierscien z tytanu jest fajnym pomyslem, jednak przydaloby sie konkretne i stale miejsce wyznaczane jakas metoda przez bota badz przez gracza np. flaga - jak sie restartuje program to tworzy nowy pierscien co po czasie moze wkurzyc.
_________________
 
 
     
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: 07-12-2011, 22:48   

Czyli po pierwsze ma być tylko jeden pierścień, przypisanie go do flagi byłoby za proste. Wolałbym tego uniknąć, Im mniej ingerencji gracza tym lepiej. Czy jednak dodać flagę?

Ten fragment jest zły? O co chodzi z tą zablokowaną stacją? Goto zwraca wtedy w wyniku 212 więc powinno być ok.
Kod:
            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);
            }

Jeżeli goto jest równe 212 to robot raczej nie rusza się z miejsca więc nie powinien zużywać energii.
 
 
     
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: 08-12-2011, 17:41   

@up

Mozesz wyznaczyc np. miejsce obok huty i tam skladowac. Flagi sa po prostu wygodne, bo mozna poustawiac zasoby w miejscach w ktorych najczesciej sie je wykorzystuje -> tytan obok fabryki botow etc.

A z rechargem to mam wrazenie, ze robot po stwierdzeniu niedostepnosci stacji energetycznej kontynuuje swoja prace przez co traci energie. Nie przygladalem sie kodowi i w sumie robota tez nie widzialem bo gdziestam lazil, ale zanim dojechal jak zwolnilem to padl.
_________________
 
 
     
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: 08-12-2011, 22:23   

Czyli jeżeli jest flaga to przy niej, jeżeli flagi nie ma to na wolnym miejscu w pobliżu huty.
Nie wiem o co chodzi z tym rechargem ale wiem że jest słaby.
 
 
     
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-12-2011, 16:53   

Z tym rechargem to cos pokombinuje, ale narazie to 15min poprawialem twoj kod, zeby byl czytelny. Po cholere tyle spacji i po cholere komentujesz kazda funkcje? "Obroc w lewo" 20x wyglada, jakby program byl pisany dla idioty.
_________________
 
 
     
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: 11-12-2011, 18:33   

Ze spacjami jest według mnie czytelniejszy. A cały komentarz jest w ogóle zbędny. Może kiedyś będzie to przeglądał jakiś idiota.
 
 
     
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: 11-12-2011, 18:48   

Ze spacjami czytelniejszy? W 3/4 linijek dales tyle spacji, ze funkcja przechodzi na druga linie, nie wiem co jest w tym czytelnego :P
_________________
 
 
     
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: 11-12-2011, 19:00   

Jak dla mnie, nie powinno się pisać w ogóle komentarzy. Szkoda czasu/bajtów. W końcu program to program, a nie "Nie-boska komedia"...






...a co ja wiem o programowaniu?...
_________________
- Stężenie czekolady we krwi: 93‰
- Ja to bym zjadł jeszcze batona...


 
     
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-12-2011, 19:55   

"Komentarze piszemy w celu wyjaśnienia pewnych fragmentów kodu programu, oddzielenia jednej jego części od drugiej, oznaczania funkcji i modułów itp. Odpowiednia ilość komentarzy ułatwia zrozumienie kodu, więc stosuj je często :) " ~Karol Kuczmarski -Kurs C++
_________________
http://projektsimbax.blogspot.com/ <- Taki sobie blog
 
     
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: 11-12-2011, 21:16   

To w końcu jak z tymi komentarzami? Niepotrzebne są te spacje przed komentarzem! Cały komentarz jest zbędny!


Kod:
// TitaniumCollector 11.12.11
// Created by MROCZA

extern void object::TitaniumCollector()
{
   
    object  item;
    object  convert;
    point   flag (0,0);
    int     i = 0;
   
    errmode(0);
   
    convert = radar(Converter);
    if ( convert == null )
    {
        message("Brak huty",DisplayError);
        return;
    }
   
    recharge();   

    while (true)
    {
       
        if(load == null or load.category != TitaniumOre)
        {
           
            if(load != null)
            {
                goto(space(position));
                drop();
            }
           
            while(true)
            {
                item = radar(TitaniumOre);
                if ( item != null ) break;
                if ( i % 100 == 0 ) message("Nie znaleziono więcej tytanu");
                i++ ;
                wait(0.1);
            }
           
            if(goto(item.position) == 211)
            {
                message("Ruda niedostępna",DisplayError);
                return;
            }
           
            if( grab() != 0 ) continue;
        }
       
        while(true)
        {
            if (goto(convert.position) == 000 ) break;
            if (goto(convert.position) == 212 ) continue;
            message("Huta niedostępna",DisplayError);
            return;
        }
       
        errmode(1);
       
        item = radar(Titanium,0,59,0,3);
        if ( item == null )
        {
            drop();
            move(-2);
            wait(10);
        }
        else
        {
            turn(60);
            drop();
            turn(-60);
            grab();
            turn(-60);
            drop();
            turn(120);
            grab();
            turn(-60);
            drop();
            turn(-60);
            grab();
           
            errmode(0);
           
            if ( flag.x == 0 )
            {
                goto(space(position,6,50,6));
                flag = position;
            }
            else
            {
                while(goto(flag) == 212) wait(1);
            }
           
            stock();
           
        }
       
        recharge();
       
    }
}

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

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(category == Subber)
        {
            message("Niski stan baterii",DisplayError);
            return;
        }
       
        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;
       
    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;
            }
           
        }
       
    }
   
}


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




Tak to ma wyglądać!!! :evil:
Bez żadnego komentarza. Jeżeli coś jest niejasne to pytajcie. To komentarz wszystko skomplikował. Spacji i enterów jest tutaj tyle ile ma być!

Do poprawy jest jeszcze recharge i zbieranie tytanu przy fladze jeżeli jest != null.[/code]
Ostatnio zmieniony przez Mrocza 12-12-2011, 07:50, w całości zmieniany 2 razy  
 
 
     
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: 12-12-2011, 01:08   

@Simbax
1) Jesli potrzebujesz komentarzy zeby zrozumiec swoj program to powodzenia :>
2) Komentarze sa po to, zeby objasniac i zwiekszac czytelnosc programu. Jesli dasz komentarz przy kazdej najglupszej linijce w stylu:
Kod:

{ //to jest klamra
   int x = 2; //x jest rowne dwa
} //to jest druga klamra

To nikt tych komentarzy nie bedzie czytac i program w dodatku bedzie wygladal jak smietnik. Jak juz cos robisz to z glowa.

@MROCZA
Teraz mozna nad tym programem pracowac :)
_________________
 
 
     
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