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

Programy - saper

Krzysztof - 03-09-2012, 13:07
Temat postu: saper
Po wgraniu tego programu dla działka będzie ono przetwarzało tytan na miny :-) .
Kod:

extern void object::saper()
{
object p;
point a;
while(true){

if(radar(Titanium)!=null){
p = radar(Titanium,0,360);
a = p.position;
goto(space(p.position));
turn(direction(p.position));
aim(-7);
fire(0.05);
wait(0.5);
produce(a, 0, Mine, "");
}
wait(1);
}
}


krzys_h - 03-09-2012, 14:42

Oryginalny pomysł :D
Raptor - 03-09-2012, 15:27

Pomysł świetny. Prowizorka, ale za to jaka!

Trzeba będzie dopisać jeszcze algorytm omijania już istniejących min. Gdy tytan jest ułożony zbyt blisko siebie, robot po wyprodukowaniu miny przechodzi do następnej kostki i w dodatku się cofa, co jest dość niebezpieczne przy sąsiadującej już minie. Szkoda, że nie wiem, jak to zrobić.

Simbax - 03-09-2012, 16:16

Algorytm omijania był w ćwiczeniach...

Pomysł dobry, wykonanie słabe. Niby działa, ale np. chciałbym sobie przy pomocy kilku zmiennych ustawić który tytan ma przerobić na minę (np. tylko ten w zasięgu kilku metrów albo tylko ten w kierunku północnym). W dodatku zauważyłem, że bardzo lubisz pętle nieskończone, a to niedobrze. Tak trudno zrobić porządny warunek?

Krzysztof - 03-09-2012, 16:28

Simbax napisał/a:

Pomysł dobry, wykonanie słabe.

Wiem to był program zrobiony w 5 minut, spróbuję go ulepszyć.

Mrocza - 03-09-2012, 21:06

Zamiast:
Kod:
goto(p.position);
move(-1);
Wystarczy napisać:
Kod:
goto(space(p.position));
turn(direction(p.position));
W tym przypadku robot nie wpadnie na minę, ale jeszcze trzeba obliczyć kąt strzału bo aim(-20); się raczej nie sprawdzi.

Krzysztof - 16-09-2012, 18:44

Poprawiłem.
Mrocza - 17-09-2012, 17:11

Po co ta zmienna a? Jest według mnie zbędna. Jej usunięcie skraca program.

Odległość między robotem a tytanem jest teraz zmienna. Kąt strzału nie może być więc stały bo może dojść do zacięcia programu.

Można albo ustawić odległość na stałą dodając odpowiednie parametry do space. Co jest szybkim ale nie najlepszym rozwiązaniem. Albo obliczyć dokładny kąt strzału przy użyciu funkcji trygonometrycznej.

Krzysztof - 17-09-2012, 18:19

To weź wrzuć poprawiony program bo aktualnie nie mam czasu.

Powered by phpBB modified by Przemo & WRIM © 2003 phpBB Group