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: 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 :P ), 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   

Kod:
if(abs(alfa)<20)

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ę 8-)

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ć :P
_________________

 
     
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ć :P

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. :P

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. :mrgreen: :lol:
 
     
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%
_________________
 
 
     
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