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
Phazer A-A
Autor Wiadomość
Przemq 
Adept CBot


Twoja ulubiona misja: Wyposażenie
Wiek: 21
Dołączył: 30 Sie 2010
Posty: 7
Skąd: Brzydgoszcz
Wysłany: 30-08-2010, 11:07   Phazer A-A

Mój prosty program do obrony przeciwlotniczej. Przystosowany do współpracy dwóch Dział Fazowych. Jestem słaby w CBot, ale mam nadzieję, że na tym forum się doszkolę. :-)

Ps.: Dodałem parę usprawnień

Kod:

extern void object::PhazerAA()
{
    object item;           
   
    aim(45);                 
   
    while ( true )           
    {
        item = radar(AlienWasp);
        if ( item != null )
        {
           
            if (distance(position, item.position) < 55)
            {
                turn(direction(item.position));
                fire(0.1);       
            }
        }
        wait(0.2);             
    }
}
_________________
Cytat:
Fpole' sawtutel 'upxare ayoeri tsat neu tsun mivunge...
 
     
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: 31-08-2010, 16:11   

Sam program mimo, ze nie ma jakichs specjalnych fajerwerkow jest dobrze napisany, ale ja tu za cholere nie widze przystosowania do wspolpracy dwoch dzial :P
_________________
 
 
     
Bartek c++ 


Twoja ulubiona misja: Tropica - Czas na atak
Pomógł: 6 razy
Wiek: 20
Dołączył: 07 Lip 2009
Posty: 390
Wysłany: 31-08-2010, 18:32   

Jednak musze cie ostrzec że nie zawsze "aim(45);" wystarcza czasami gdy ukształtowanie terenu sie zmieni osa zniża lub podnosi swój pułap.
_________________

 
     
Przemq 
Adept CBot


Twoja ulubiona misja: Wyposażenie
Wiek: 21
Dołączył: 30 Sie 2010
Posty: 7
Skąd: Brzydgoszcz
Wysłany: 31-08-2010, 19:51   

Berserker napisał/a:
Sam program mimo, ze nie ma jakichs specjalnych fajerwerkow jest dobrze napisany, ale ja tu za cholere nie widze przystosowania do wspolpracy dwoch dzial :P


Chodziło mi o to, że gdy są dwa działa lepiej się sprawdzają (tzn.: Mniejsze prawdopodobieństwa że osa się przebije).

Ps.: Program testowałem na programie wasp03 bodajże. Z 40 os nic nie zostało.
_________________
Cytat:
Fpole' sawtutel 'upxare ayoeri tsat neu tsun mivunge...
 
     
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: 31-08-2010, 19:59   

Cytat:
Chodziło mi o to, że gdy są dwa działa lepiej się sprawdzają (tzn.: Mniejsze prawdopodobieństwa że osa się przebije).

Ale to nie jest jeszcze wspolpraca miedzy robotami, logika podpowiada, ze jak sa 2 roboty to jest lepiej, 3 to jeszcze lepiej etc, ale wspolpraca to cos wiecej :)
_________________
 
 
     
Bartek c++ 


Twoja ulubiona misja: Tropica - Czas na atak
Pomógł: 6 razy
Wiek: 20
Dołączył: 07 Lip 2009
Posty: 390
Wysłany: 01-09-2010, 08:54   

dla współpracy powinieneś zrobić jakiś sprawdzacz jego osi odczytuje jego oś aby sie w niego nie obrócić i go nie zestrzelić
_________________

 
     
Przemq 
Adept CBot


Twoja ulubiona misja: Wyposażenie
Wiek: 21
Dołączył: 30 Sie 2010
Posty: 7
Skąd: Brzydgoszcz
Wysłany: 01-09-2010, 09:30   

Bartek c++ napisał/a:
dla współpracy powinieneś zrobić jakiś sprawdzacz jego osi odczytuje jego oś aby sie w niego nie obrócić i go nie zestrzelić


Eee... Można prościej? Najlepiej z przykładem.
_________________
Cytat:
Fpole' sawtutel 'upxare ayoeri tsat neu tsun mivunge...
 
     
Bartek c++ 


Twoja ulubiona misja: Tropica - Czas na atak
Pomógł: 6 razy
Wiek: 20
Dołączył: 07 Lip 2009
Posty: 390
Wysłany: 01-09-2010, 09:42   

Sam nie pamiętam narazie nie mam czasu ale jak będe miał to znajde
_________________

 
     
Przemq 
Adept CBot


Twoja ulubiona misja: Wyposażenie
Wiek: 21
Dołączył: 30 Sie 2010
Posty: 7
Skąd: Brzydgoszcz
Wysłany: 01-09-2010, 11:23   

Jak zrobić aby oba Phazery nie waliły w jedną osę? Przy atakach z jednego kierunku program radzi sobie dobrze, ale gdy atak nadchodzi z kilku stron... BUM,, BUM i bazy ni ma... :-/
_________________
Cytat:
Fpole' sawtutel 'upxare ayoeri tsat neu tsun mivunge...
 
     
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: 01-09-2010, 11:59   

Przemq napisał/a:
Jak zrobić aby oba Phazery nie waliły w jedną osę?

Musisz dzielić dane o obiektach między robotami, najlepiej do tego nadają się statyczne pola klasy.

Algorytm w pseudokodzie:
Kod:

while(true) {
 minlen=0;
 do {
  osa = radar(category=AlienWasp, minimalny_dystans=minlen);
  if (osa==null) break;
  minlen = dystans_do(osa)+0.001;
 while (osa należy do publiczna_klasa.obcy);
 if (osa==null) { czekaj_zeby_nie_przeciazyc_CPU; continue; }
 dodaj do publiczna_klasa.obcy element osa;
}

// algorytm poprawiony 2010-09-01 16:54 -adiblol

Teoretycznie taki algorytm powinien zadziałać na nieskończenie wielkiej liczbie robotów. publiczna_klasa.obcy to zbiór, może zostać zaimplementowany jako tablica.
_________________
1Tbps Project && Telecomix Network

Ostatnio zmieniony przez adiblol 01-09-2010, 16:54, w całości zmieniany 1 raz  
 
 
     
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: 01-09-2010, 14:48   

Jesli klasy, pola etc to narazie za wysoki poziom, to mozna po prostu kazdemu robotowi przydzielic pewien kat ktory ma bronic. Np mamy 3 roboty, wiec kazdy broni swoje 120°. Czyli piszemy sobie funkcje ktora wyszukuje cel
Kod:

object object::getTarget(float range, int n, float len)
{
object p;
p = radar(AlienWasp, range/2+(n-1)*range-orientation), range, 0, len);
return p;
}

range - kat wyszukiwania;
n - numer robota (by bylo wiadomo ktora strefe ma przeszukiwac);
len - max odleglosc;

I mamy minimalna wspolprace miedzy robotami.
_________________
 
 
     
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