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 |
|
|
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 |
_________________
|
|
|
|
|
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 |
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. |
_________________
|
|
|
|
|
|
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 |
|
|