Do uranu |
Jak oceniasz program? |
1-ŻAL.PL! |
|
60% |
[ 6 ] |
2-słaby |
|
20% |
[ 2 ] |
3-średni |
|
0% |
[ 0 ] |
4-dobry |
|
0% |
[ 0 ] |
5-bardzo dobry |
|
10% |
[ 1 ] |
6-ALE URWAŁ! |
|
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 |
_________________ 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
|
|
|
|
|
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
|
|
|
|
|
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:
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 |
|
|
|
|
|