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
Do uranu

Jak oceniasz program?
1-ŻAL.PL!
60%
 60%  [ 6 ]
2-słaby
20%
 20%  [ 2 ]
3-średni
0%
 0%  [ 0 ]
4-dobry
0%
 0%  [ 0 ]
5-bardzo dobry
10%
 10%  [ 1 ]
6-ALE URWAŁ!
10%
 10%  [ 1 ]
Głosowań: 10
Wszystkich Głosów: 10

Autor Wiadomość
C ruels! 
Neokid


Twoja ulubiona misja: user levels,swobodna gra i KO
Wiek: 22
Dołączył: 08 Paź 2009
Posty: 185
Skąd: Devil MachineXD
Wysłany: 23-01-2011, 14:51   Do uranu

Ten program działa tak:
1.Robot wyszukuje najbliższy kawałek uranu.
2.Leci do niego i zabiera go obok NIEBIESKIEJ flagi(gdy to zrobi przesuńcie ten kawałek bo inaczej może wywalić błąd).
3.Wraca do miejsca zbierania,które musi być oznaczone CZERWONĄ flagą
4.Powtarza punkty 1-3 w nieskończoność dopóki robot nie zostanie zniszczony/nie skończy mu się bateria/uran.
Kod:

extern void object::Uran()
{
    while (true)
    {
        object item;
        item = radar(UraniumOre);
        goto(item.position);
        grab();
        object flaga;
        flaga = radar(BlueFlag);
        goto(flaga.position);
        drop();
        object flaga2;
        flaga2 = radar(RedFlag);
        goto(flaga2.position);
    }
}


Wszelkie poprawki i uwagi mile widziane.Program zrobiony dzisiaj ale nie był robiony na szybko.Sprawdzałem go na nurku (dla niego pierwotnie był ten program) i transporterze latającym na user mapie od Thorin12(ta co wygląda jak pustynna wyspa z dużą górą pośrodku z mrówkami pod grawiroślinami).
_________________
http://doladujse.pl/7415 -doładowania na koma
http://www.minecraftaccounts.com?join=34132 - darmowe konta do gry Minecraft
 
     
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: 23-01-2011, 15:10   

Strasznie prosty ten program... Po co ma być oznaczone jakieś "miejsce zbierania"? Jak robot ma zbierać uran to mam gdzieś czy poleci do miejsca 2 metry obok czy na drugi koniec mapy - ma po prostu mi przynieść uran. Chyba, że nie rozumiem jaki cel ma ten program :)

C ruels! napisał/a:
gdy to zrobi przesuńcie ten kawałek bo inaczej może wywalić błąd


Jak to Berserker gdzieś napisał: masz móc w tym czasie zjeść obiad.

Program zbyt prosty... Coś takiego może napisać "na szybko" nawet zaczynający naukę CBot.
_________________
http://projektsimbax.blogspot.com/ <- Taki sobie blog
 
     
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: 23-01-2011, 17:54   

C ruels! napisał/a:
Kod:

extern void object::Uran()
{
    while (true)
    {
        object item;
        item = radar(UraniumOre);
        goto(item.position);
        grab();
        object flaga;
        flaga = radar(BlueFlag);
        goto(flaga.position);
        drop();
        object flaga2;
        flaga2 = radar(RedFlag);
        goto(flaga2.position);
    }
}

1. po co pisać object item ... object flaga ... object flaga2 jak można napisać np. object item, flaga, flaga2.
2. Jeszcze lepiej użyć tylko 1 zmiennej i w niej zapisywać po kolei pozycję rudy i flag.
3. Jedynie osa jest w stanie umieścić rudę dokładnie na pozycji flagi. Proponuję żeby robot zbierał rudę z okolic flagi (polecenie search).
4.
C ruels! napisał/a:
2.Leci do niego i zabiera go obok NIEBIESKIEJ flagi(gdy to zrobi przesuńcie ten kawałek bo inaczej może wywalić błąd).

Tu też można użyć search. Niech robot wyszuka wolne miejsce w okolicy flagi i tam zostawi rudę.
5. Mam wrażenie że znasz tylko polecenia while, grab, drop, radar i goto.
.
Edit: kto zaznaczył 5 bardzo dobry? C ruels! ?
Zaraz dodam poprawiony program.

Edit2:
Kod:

extern void object::Uran()
{
while (true)
{
object a, b;
a = radar(BlueFlag);
b = search(UraniumOre,a);
goto(b.position);
grab();
a = radar(RedFlag);
b = search(space,a); //nie wiem czy dobrze, ale to ma znaleźć wolna pozycję koło flagi
goto(b.position);
drop();
}
message ("error 704, wyszedłem z pętli while(true)",DisplayError);
}
 
     
Emxx52 
W istocie


Twoja ulubiona misja: Tropica
Dołączył: 04 Kwi 2010
Posty: 207
Skąd: Z istotnych pobudek
Wysłany: 23-01-2011, 20:15   

Apus napisał/a:
nie wiem czy dobrze

Bo nie dobrze: search znajduje obiekt niedaleko pozycji a nie niedaleko obiektu (search(UraniumOre,a.position);), a jak chcesz wyznaczyć pustą pozycję niedaleko flagi piszesz: space(a.position,2,5,10);

[ Dodano: 23-01-2011, 20:19 ]
No to taka mała poprawka tego głupiego programu
Kod:
extern void object::Uran()
{
while (true)
{
object a, b;
a = radar(RedFlag);
b = search(UraniumOre,a.position);
goto(b.position);
grab();
a = radar(BlueFlag);
goto(space(a.position,2,5,10));
drop();
}
message ("error 704, wyszedłem z pętli while(true)",DisplayError);
}
_________________
Windows w szacie Linuxa
 
     
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: 23-01-2011, 20:32   

@offtop: Wiecie co myślę? Wrzucajmy programy z błędami i bezcelowością! Takie, żeby nikt się nie mógł powstrzymać od skomentowania. Po co? Ano, żeby zwiększyć aktywność na forum :mrgreen:
_________________
http://projektsimbax.blogspot.com/ <- Taki sobie blog
 
     
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-01-2011, 21:01   

_________________
1Tbps Project && Telecomix Network

 
 
     
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: 24-01-2011, 11:19   

Emxx52 napisał/a:
Apus napisał/a:
nie wiem czy dobrze

Bo nie dobrze: search znajduje obiekt niedaleko pozycji a nie niedaleko obiektu (search(UraniumOre,a.position);), a jak chcesz wyznaczyć pustą pozycję niedaleko flagi piszesz: space(a.position,2,5,10);


Dawno nie pisałem programu. Zresztą każdy wie o co chodzi. Często zapominam gdzieś dopisać '.position'. Nie pamiętałem tez parametrów space(); więc po prostu napisałem 'space'. Możesz mi wyjaśnić co oznacza to 2,5,10? Domyślam się że chodzi o promień wolnej przestrzeni, jej max odległość od punktu.

To teraz znowu ja poprawię program:
Kod:
extern void object::Uran()
{
while (true)
{
object a, b;
a = radar(RedFlag);
b = search(UraniumOre,a.position);
if (b == null);
{
message("skończyła się ruda",DisplayWarning); //na niebiesko
break;
}
goto(b.position);
grab();
a = radar(BlueFlag);
b = space(a.position,2,5,10);
if (b == null);
{
message("skończyło się wolne miejsce",DisplayWarning); //na niebiesko
drop();
break;
}
goto(b.position);
drop();
}
if (a.position =! b.position)
{
motor(1,-1);
shield(25, 1);
wait(3600);
}
else
{
message("program zakończony",DisplayInfo); //na zielono
}
}
 
     
Emxx52 
W istocie


Twoja ulubiona misja: Tropica
Dołączył: 04 Kwi 2010
Posty: 207
Skąd: Z istotnych pobudek
Wysłany: 24-01-2011, 12:44   

2 to dystans od innego obiektu, 5 to minimum metrów od flagi, a 10 to max odległość od flagi
_________________
Windows w szacie Linuxa
 
     
C ruels! 
Neokid


Twoja ulubiona misja: user levels,swobodna gra i KO
Wiek: 22
Dołączył: 08 Paź 2009
Posty: 185
Skąd: Devil MachineXD
Wysłany: 24-01-2011, 17:16   

No i co że prosty?Ważne,ze działa!
_________________
http://doladujse.pl/7415 -doładowania na koma
http://www.minecraftaccounts.com?join=34132 - darmowe konta do gry Minecraft
 
     
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: 24-01-2011, 23:08   

Nie C ruels. Podstawą programowania jest obmyślanie nowych metod optymalizacji kodu, przy zachowaniu jego funkcjonalności i na odwrót.
_________________
- Stężenie czekolady we krwi: 93‰
- Ja to bym zjadł jeszcze batona...


 
     
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: 25-01-2011, 11:14   

Emxx52 napisał/a:
2 to dystans od innego obiektu, 5 to minimum metrów od flagi, a 10 to max odległość od flagi

Aha.
To jeszcze jedna poprawka.
Kod:
extern void object::Uran()
{
 while (true)
 {
  object a, b;
  a = radar(RedFlag);
  b = search(UraniumOre,a.position);
  if (b == null);
  {
   message("skończyła się ruda",DisplayWarning); //na niebiesko
   break;
  }
  goto(b.position);
  grab();
  a = radar(BlueFlag);
  b = space(a.position,2,0,15); //poprawka
  if (b == null);
  {
   message("skończyło się wolne miejsce",DisplayWarning); //na niebiesko
   drop();
   break;
  }
  goto(b.position);
  drop();
 }
 message("program zakończony",DisplayInfo); //na zielono
}
 
     
Emxx52 
W istocie


Twoja ulubiona misja: Tropica
Dołączył: 04 Kwi 2010
Posty: 207
Skąd: Z istotnych pobudek
Wysłany: 25-01-2011, 11:50   

Ale popełniasz bardzo duży błąd:
Apus napisał/a:
b = space(a.position,2,0,15);
Pusta pozycja nie jest obiektem
Powinno być tak
Kod:
extern void object::Uran()
{
 while (true)
 {
  object a, b;
  a = radar(RedFlag);
  b = search(UraniumOre,a.position);
  if (b == null);
  {
   message("skończyła się ruda",DisplayWarning); //na niebiesko
   break;
  }
  goto(b.position);
  grab();
  a = radar(BlueFlag);
  goto(space(a.position,2,0,15); 
  drop();
 }
 message("Program zakończony",DisplayInfo); //na zielono
}
_________________
Windows w szacie Linuxa
 
     
krzys_h 


Twoja ulubiona misja: Wszystkie :)
Pomógł: 3 razy
Wiek: 20
Dołączył: 12 Gru 2010
Posty: 255
Skąd: Łódź
Wysłany: 26-01-2011, 13:56   

Nie, bo zmienna typu point nie może przyjąć wartości null ;)
 
 
     
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: 26-01-2011, 14:02   

krzys_h napisał/a:
Nie, bo zmienna typu point nie może przyjąć wartości null ;)

Jak to nie może? Napisałem w programie 'c = space(a.position,2,0,15);' czyli jeśli nie będzie wolnego miejsca o podanych parametrach to zmienna c przyjmie wartość null.
 
     
krzys_h 


Twoja ulubiona misja: Wszystkie :)
Pomógł: 3 razy
Wiek: 20
Dołączył: 12 Gru 2010
Posty: 255
Skąd: Łódź
Wysłany: 26-01-2011, 14:54   

Apus napisał/a:
krzys_h napisał/a:
Nie, bo zmienna typu point nie może przyjąć wartości null ;)

Jak to nie może? Napisałem w programie 'c = space(a.position,2,0,15);' czyli jeśli nie będzie wolnego miejsca o podanych parametrach to zmienna c przyjmie wartość null.

A właśnie, że nie przyjmie. Powód? Wpisz w programie:
Kod:
point c;
c=null;

A jak ci sie nie chce to powiem co dostaniesz: błąd Zły typ dla przypisania. To oznacza, że zmienna typu point nie może mieć wartości null
 
 
     
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