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
Przesunięty przez: Schocker
20-02-2010, 20:50
RechargeCell (Czyli naładuj ogniwo)
Autor Wiadomość
Schocker 
Wants cookies!


Twoja ulubiona misja: Hmm... All.
Pomógł: 3 razy
Wiek: 22
Dołączył: 31 Maj 2009
Posty: 177
Skąd: Wadowice
Wysłany: 01-06-2009, 15:59   RechargeCell (Czyli naładuj ogniwo)

Pierwszy program, na który miałem jakiś pomysł. Dzisiaj postaram się go usprawnić, ale coś mi się dzieje z kompem... Przydało by się go poprawić, był testowany dosłownie chwilę. Może się komuś przyda... Ah, jak zwykle za bardzo się rozpisuję...
Kod:

extern void object::RechargeCell()
{
    point  start;         
    object ogni;       
    object elek;
   
    start = position;     
   
    elek = radar(PowerStation);
    ogni = radar(PowerCell);
   
    goto(ogni.position);
    grab(InFront);
   
    if (ogni.energyLevel < 1 )
    {
        goto(elek.position);           
    }
   
    else
    {
        drop(InFront);
        goto(start);
        message("Najblizsze ogniwo jest juz naladowane!", DisplayWarning);
    }
   
    while (ogni.energyLevel < 1 )
    {
        wait(1);
    }
   
    if (ogni.energyLevel == 1 )
    {
        goto(start);
        message("Ładowanie zakończone!", DisplayInfo);
    }
}

_________________
But there's no sense crying over every mistake, you just keep on trying 'till you ran out of cake -GlaDOS
 
 
     
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: 01-06-2009, 16:17   

"grab();" daj między "if (ogni.energyLevel < 1 ) { " i "goto(elek.position);". I po "message("Najblizsze ogniwo jest juz naladowane!", DisplayWarning);" daj "return;", to się program zakończy.
_________________
1Tbps Project && Telecomix Network

 
 
     
Schocker 
Wants cookies!


Twoja ulubiona misja: Hmm... All.
Pomógł: 3 razy
Wiek: 22
Dołączył: 31 Maj 2009
Posty: 177
Skąd: Wadowice
Wysłany: 01-06-2009, 16:52   

Ah, mój błąd. Właśnie o tym m.in. mówiłem.

Version 2.0! xD

Kod:
extern void object::RechargeCell2()
{
    point  start;         
    object cell;           
    object item;
    object odgr;
   
    start = position;     
   
    item = radar(PowerStation);
    cell = radar(PowerCell);
   
    if( item == null )
    {
        odgr = radar(PowerCaptor);
    }
    if ( odgr == null )
    {
        message("Nie znaleziono elektrowni ani odgromnika!", DisplayError);
                return;
    }
    else
    {
       
       
        if (cell.energyLevel < 1 )
        {
            goto(cell.position);
            grab(InFront);
            goto(item.position);           
        }
       
        else
        {
            goto(start);
            message("Najblizsze ogniwo jest juz naladowane!", DisplayWarning);
    return;
        }
       
        while (cell.energyLevel < 1 )
        {
            wait(1);
        }
       
        if (cell.energyLevel == 1 )
        {
            goto(start);
            message("Ładowanie zakończone!", DisplayInfo);
        }
    }
}


1) Przy pisaniu programu używam raczej nazw angielskich, jakoś tak się przyzwyczaiłem. :P
2) Teraz, najpierw szuka Elektrowni, gdy nie znajdzie jej, szuka Odgromnika. W wypadku braku i tego, wyświetla wiadomość i kończy program.
3) Ah, jeśli wszystkie ogniwa w pobliżu są naładowane, robot już nie "idzie" do żadnego, tylko po prostu pokręci się przez parę sekund, wyświetli wiadomość i zatrzyma program.
_________________
But there's no sense crying over every mistake, you just keep on trying 'till you ran out of cake -GlaDOS
 
 
     
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: 04-10-2010, 13:28   

Schocker napisał/a:
extern void object::RechargeCell2()
{
point start;
object cell;
object item;
object odgr;

start = position;

item = radar(PowerStation);
cell = radar(PowerCell);

if( item == null )
{
odgr = radar(PowerCaptor);
}
if ( odgr == null )
{
message("Nie znaleziono elektrowni ani odgromnika!", DisplayError);
return;
}
else
{


if (cell.energyLevel < 1 )
{
goto(cell.position);
grab(InFront);
goto(item.position);
}

else
{
goto(start);
message("Najblizsze ogniwo jest juz naladowane!", DisplayWarning);
return;
}

while (cell.energyLevel < 1 )
{
wait(1);
}

if (cell.energyLevel == 1 )
{
goto(start);
message("Ładowanie zakończone!", DisplayInfo);
}
}
}


Program , jeśji wykryje stację energytyczną, wykrzaczy się i wyświetli "Zmienna nie została zainicjowana".

Poprawa:
Kod:
extern void object::RechargeCell3()
{
    errmode(0);
    point  start;
    int list[], i=0;         
    object cell;           
    object item;

    list[i++]=PowerStation;
    list[i++]=PowerCaptor;
   
    start = position;     
   
    item = radar(list);
    cell = radar(PowerCell);
   
    if ( item == null )
    {
        message("Nie znaleziono elektrowni ani odgromnika!", DisplayError);
        return;
    }
    if( cell == null )
    {
        message("Nie znaleziono ogniwa elektrycznego",DisplayError);
        return;
    }
    else
    {
       
        if (cell.energyLevel < 1 )
        {
            goto(cell.position);
            grab();
            goto(item.position);           
        }
       
        else
        {
            goto(start);
            message("Najblizsze ogniwo jest juz naładowane!", DisplayError);
            return;
        }
       
        while (load.energyLevel < 1 )
        {
            wait(0.01);
        }
       
        if (load.energyLevel == 1 )
        {
            goto(start);
            message("Ładowanie zakończone!", DisplayInfo);
            drop();
        }
    }
}
_________________
Nazywajcie mnie KL582 (nick w Minecraft)
 
     
Schocker 
Wants cookies!


Twoja ulubiona misja: Hmm... All.
Pomógł: 3 razy
Wiek: 22
Dołączył: 31 Maj 2009
Posty: 177
Skąd: Wadowice
Wysłany: 04-10-2010, 15:19   

Korniszon napisał/a:
Schocker napisał/a:
extern void object::RechargeCell2()
{
point start;
object cell;
object item;
object odgr;

start = position;

item = radar(PowerStation);
cell = radar(PowerCell);

if( item == null )
{
odgr = radar(PowerCaptor);
}
if ( odgr == null )
{
message("Nie znaleziono elektrowni ani odgromnika!", DisplayError);
return;
}
else
{


if (cell.energyLevel < 1 )
{
goto(cell.position);
grab(InFront);
goto(item.position);
}

else
{
goto(start);
message("Najblizsze ogniwo jest juz naladowane!", DisplayWarning);
return;
}

while (cell.energyLevel < 1 )
{
wait(1);
}

if (cell.energyLevel == 1 )
{
goto(start);
message("Ładowanie zakończone!", DisplayInfo);
}
}
}


Program , jeśji wykryje stację energytyczną, wykrzaczy się i wyświetli "Zmienna nie została zainicjowana".

Poprawa:
Kod:
extern void object::RechargeCell3()
{
    errmode(0);
    point  start;
    int list[], i=0;         
    object cell;           
    object item;

    list[i++]=PowerStation;
    list[i++]=PowerCaptor;
   
    start = position;     
   
    item = radar(list);
    cell = radar(PowerCell);
   
    if ( item == null )
    {
        message("Nie znaleziono elektrowni ani odgromnika!", DisplayError);
        return;
    }
    if( cell == null )
    {
        message("Nie znaleziono ogniwa elektrycznego",DisplayError);
        return;
    }
    else
    {
       
        if (cell.energyLevel < 1 )
        {
            goto(cell.position);
            grab();
            goto(item.position);           
        }
       
        else
        {
            goto(start);
            message("Najblizsze ogniwo jest juz naładowane!", DisplayError);
            return;
        }
       
        while (load.energyLevel < 1 )
        {
            wait(0.01);
        }
       
        if (load.energyLevel == 1 )
        {
            goto(start);
            message("Ładowanie zakończone!", DisplayInfo);
            drop();
        }
    }
}


Dziwne... U mnie nic takiego się nie działo. Ale program jest stary i w ogóle. :P A na forum mogę wejść tylko z komórki.

Tapnięto z Samsunga Galaxy Spica.
_________________
But there's no sense crying over every mistake, you just keep on trying 'till you ran out of cake -GlaDOS
 
 
     
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