Oryginalna strona colobot.cba.pl umarła, gdy cba.pl przestało oferować darmowy hosting. To jest statyczny mirror, pobrany w 2018. ~krzys_h
 |
Forum - Polski Portal COLOBOTa |
 |
 |
Przesunięty przez: Abadon 20-02-2010, 13:36 |
robot obronny |
Autor |
Wiadomość |
Bartek c++

Twoja ulubiona misja: Tropica - Czas na atak
Pomógł: 6 razy Wiek: 20 Dołączył: 07 Lip 2009 Posty: 390
|
Wysłany: 10-12-2009, 14:29 robot obronny
|
|
|
To mój pierwszy w którym robot sam dobrze celuje.
Działa on na;osy,mrówki,pająki,robale.
To mój pierwszy taki program więc prosze go nie krytykować.
Program się przydaje gdy nie mamy surowców rzeby wybudawać wieżę obronną.
Kod: | extern void object::robotobronny()
{
while ( true )
{
object wrog;
point pos;
float B,A,alfa;
int alien[];
alien[0] = AlienAnt;
alien[1] = AlienWasp;
alien[2] = AlienSpider;
alien[3] = AlienWorm;
wrog = radar(alien);
pos = wrog.position;
turn(direction(pos));
B = pos.z - position.z-1.2*1.1;
A = distance2d(pos, position);
alfa = atan(B/A);
aim(alfa);
if (distance(position, wrog.position) < 40)
{
turn(direction(pos));
fire(0.1);
}
}
} |
|
_________________
 |
|
|
|
 |
FE4R

Twoja ulubiona misja: Saari - Inwazja
Pomógł: 4 razy Wiek: 24 Dołączył: 21 Paź 2009 Posty: 144
|
Wysłany: 10-12-2009, 19:11
|
|
|
Program jest dobry na płaskie, otwarte przestrzenie, czyli jak większość w Colobocie, ale miałem podobny program i wprowadzałem usprawnienia, aby zmniejszyć zużycie energii:
Kod: |
fire(0.1);
wait(0.5);
|
Gdy zrobiłem 20 os(co nigdzie nie występuje, prócz USer Leveli ), robot nie nadążał za osami, a poza tym marnował energię na osy, które były za blisko.
Ale przechodząc do sedna sprawy. Gdy robot jest otoczony przez osy z różnych stron i nie może ich zestrzelić, będą potem za blisko, bo robot mógł je zestrzelić. Martwa strefa, to strefa powyżej robota(może on celować tylko pod kątem 30 stopni). Na razie nie wiem, jakie poprawki trzeba wprowadzić, aby robot nie strzelał w osy w martwej strefie. |
|
|
|
 |
Bartek c++

Twoja ulubiona misja: Tropica - Czas na atak
Pomógł: 6 razy Wiek: 20 Dołączył: 07 Lip 2009 Posty: 390
|
Wysłany: 10-12-2009, 19:16
|
|
|
Ale program szybko reaguje około w 0.5 sekundy. |
_________________
 |
|
|
|
 |
FE4R

Twoja ulubiona misja: Saari - Inwazja
Pomógł: 4 razy Wiek: 24 Dołączył: 21 Paź 2009 Posty: 144
|
Wysłany: 10-12-2009, 20:39
|
|
|
Bartek c++ napisał/a: | Ale program szybko reaguje około w 0.5 sekundy. |
Ale obrót trochę zajmuje. |
|
|
|
 |
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-2009, 07:17
|
|
|
Warunek sprawdzający czy ose można trafić
Nie ludzcie się, ze tracicie ode w ten sposób bez odrobiny szczęścia |
_________________
 |
|
|
|
 |
FE4R

Twoja ulubiona misja: Saari - Inwazja
Pomógł: 4 razy Wiek: 24 Dołączył: 21 Paź 2009 Posty: 144
|
Wysłany: 11-12-2009, 09:06
|
|
|
Pracuję nad trickiem, gdzie jeśli robot nie może trafić osy, to po prostu sprawdza czy jest latający i ugania się za nią, by nie dostać z materii organicznej. |
|
|
|
 |
Bartek c++

Twoja ulubiona misja: Tropica - Czas na atak
Pomógł: 6 razy Wiek: 20 Dołączył: 07 Lip 2009 Posty: 390
|
Wysłany: 11-12-2009, 12:00
|
|
|
zrobiłem test tego programu zrobiłem programy dla os i mrówek, 2 roboty odparły atak były to;strzelec na kołach i działo organiczne na nogach .
[ Dodano: 11-12-2009, 13:50 ]
tutaj daję lepszą wersję
Kod: | extern void object::RobotObronny()
{
while ( true )
{
object wrog;
point pos;
float B,A,alfa;
int alien[];
alien[0] = AlienAnt;
alien[1] = AlienWasp;
alien[2] = AlienSpider;
alien[3] = AlienWorm;
alien[4] = AlienEgg;
if( category==PhazerShooter )
{
alien[5] = AlienQueen;
}
wrog = radar(alien);
pos = wrog.position;
turn(direction(pos));
B = pos.z - position.z-1.2*1.1;
A = distance2d(pos, position);
alfa = atan(B/A);
aim(alfa-0.3);
if (distance(position, wrog.position) < 40 )
{
turn(direction(pos));
fire(0.1);
}
if(category==PhazerShooter)
{
if (distance(position, wrog.position) < 50 )
{
turn(direction(pos));
fire(0.1);
}
}
}
} |
[ Dodano: 11-12-2009, 13:53 ]
FE4R napisał/a: | Na razie nie wiem, jakie poprawki trzeba wprowadzić, aby robot nie strzelał w osy w martwej strefie. | a ja wiem:robot musi się szybko odsunąć i strzelić |
_________________
 |
|
|
|
 |
FE4R

Twoja ulubiona misja: Saari - Inwazja
Pomógł: 4 razy Wiek: 24 Dołączył: 21 Paź 2009 Posty: 144
|
Wysłany: 11-12-2009, 15:03
|
|
|
Bartek c++ napisał/a: | a ja wiem:robot musi się szybko odsunąć i strzelić |
Nie wiesz jaki program ma osa. Jeśli ma ten kijowy z Episteca, co czeka 10 minut zanim zrzuci materię organiczną, to bez problemu, ale też pracuję nad bardziej zaawansowanym programem dla osy.
A poza tym napisałeś warunek w swoim programie, że jeśli robot jest działem fazowym, to może do wrogów również doliczyć Królową Obcy, ale tor pocisku działą fazowego jest paraboliczny i wymaga.... wiedzy, której nie posiadam. |
|
|
|
 |
Bartek c++

Twoja ulubiona misja: Tropica - Czas na atak
Pomógł: 6 razy Wiek: 20 Dołączył: 07 Lip 2009 Posty: 390
|
Wysłany: 11-12-2009, 15:31
|
|
|
patrz jak to narysowałem
działo fazowe
zwykłe działo
przepraszam że tak brzydko ale to na szybko zrobiłem.
[ Dodano: 11-12-2009, 15:34 ]
więc nie warzne jak nachylisz lufe zwykłego działa pociski lecą na tą samą odległość.
A w dziale fazowym jest tak że tym większy kąt nachylenia lufy ustawisz tym wyrzej i dalej pociski lecą.
[ Dodano: 11-12-2009, 15:36 ]
FE4R napisał/a: | Nie wiesz jaki program ma osa. Jeśli ma ten kijowy z Episteca, co czeka 10 minut zanim zrzuci materię organiczną, to bez problemu, ale też pracuję nad bardziej zaawansowanym programem dla osy. | ja mam dwa programy że jeśli wróg będzie w zasięgu 2 metrów rzuca materie, nie modli się nad wrogiem.Poza tym te programy epsiteca działają tak bo w programach os urzywane jest goto.
[ Dodano: 11-12-2009, 23:34 ]
a to filmik z działania tego programu
http://www.youtube.com/watch?v=yQZreVSs6oc |
_________________
 |
|
|
|
 |
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: 14-12-2009, 09:10
|
|
|
Fear, jeśli chcesz program dla os to możesz wziąć to co napisałem w temacie "nalot" |
_________________
 |
|
|
|
 |
FE4R

Twoja ulubiona misja: Saari - Inwazja
Pomógł: 4 razy Wiek: 24 Dołączył: 21 Paź 2009 Posty: 144
|
Wysłany: 14-12-2009, 10:49
|
|
|
Berserker napisał/a: | Fear, jeśli chcesz program dla os to możesz wziąć to co napisałem w temacie "nalot" |
Byłby świetny do testowania programów obronnych, gdyż te wasp01 czy 02 to beznadziejne programy.
Chociaż do osy jeden im się udał to ten waspe1.txt, którego używają w ćwiczeniach do zestrzelenia os. Przy 20 osach z takim programem latającemu działu organicznemu kończy się energia pod koniec. |
|
|
|
 |
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: 14-12-2009, 10:56
|
|
|
Na to trzeba pisać programy które sprawdZają wiele warunków. Mam taki jeden który ma skuteczność 75% |
_________________
 |
|
|
|
 |
|
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
|
|
|  |
 |
 |
 |
|
Polski Portal COLOBOTa © 2008 - 2012 |
|
|