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
"Radarowanie" pozycji
Autor Wiadomość
colobotwymiiata 
Zjem cię


Twoja ulubiona misja: Swobodna na Krystalii
Pomógł: 6 razy
Wiek: 20
Dołączył: 02 Lut 2009
Posty: 329
Skąd: Oleśnica
Wysłany: 21-02-2009, 10:53   "Radarowanie" pozycji

Chodzi mi o coś, co wykrywa w kolistej strefie, dookoła wybranego obiektu, np.: żeby robot sprawdzał czy w pobliżu rudy tytanu nie ma mrówki i czy można tam bezpiecznie pójść. Distance(ruda.position,mrowa.position) tutaj się nie sprawdza, bo mrówa to mrówka najbliżej robota, a nie rudy.
Fajnie by było w funkcji z wynikiem typu float.
Z góry dzięki(Jak się w ogóle da).


///Błędy! - DeiDara
Ostatnio zmieniony przez DeiDara 26-02-2009, 09:24, w całości zmieniany 1 raz  
 
 
     
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: 21-02-2009, 13:01   

W ogóle się da, ale będzie to dość wolno działać. Poszukaj na oficjalnej stronie Colobota.
_________________
1Tbps Project && Telecomix Network

 
 
     
COLOBOT 
Administrator sieci
Założyciel portalu


Twoja ulubiona misja: Obie na Orfenii
Pomógł: 1 raz
Dołączył: 07 Lut 2008
Posty: 353
Skąd: Jarocin
Wysłany: 09-02-2010, 16:33   

Odświeżam, stary temat, ale pomysł zawsze się przyda. Można w łatwy sposób manipulować parametrami polecenia radar. Myślę, że obrazek wszystko wyjaśnia.



Nie jest to kolista strefa, ale i tak jest to obszar w pobliżu danego obiektu (czerwona kropka). Parametry odległości nie są trudne do określenia, jeśli chodzi o kąty to trzeba by wykombinować jakiś wzór dzięki któremu strefa działania radaru będzie jak najbardziej podobna do kwadratu.
_________________
Bykom STOP
A niechaj narodowie wżdy postronni znają, iż Polacy nie gęsi, iż swój język mają.
 
 
     
FE4R 


Twoja ulubiona misja: Saari - Inwazja
Pomógł: 4 razy
Wiek: 24
Dołączył: 21 Paź 2009
Posty: 144
Wysłany: 09-02-2010, 19:24   

COLOBOT, ludzie odkryli już funkcję search.
Wystarczy zastosować kod:
Kod:
object cel = radar(TitaniumOre);
object wrog = search(cel.position, AlienAnt);

if(distance(cel.position, wrog.position) < 35) instrukcje...
 
     
Mrocza 


Twoja ulubiona misja: Swobodna na Ziemi
Pomógł: 4 razy
Wiek: 26
Dołączył: 29 Sie 2011
Posty: 249
Skąd: Lublin
Wysłany: 24-09-2011, 21:40   

Czy instrukcja search może korzystać z tablicy?
Ostatnio miałem z tym problemy przy tworzeniu programu GrabersDefender

http://www.colobot.cba.pl...p?p=17599#17599
 
 
     
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: 25-09-2011, 14:21   

Nie, nie moze. Funkcja search() jest napisana tylko dla argumentow (int, point), funkcja radar ma zarowno (int, float, float, float, float, int, int) jak i ([] int, float float, float, float, int, int). Mozesz zawsze zdefiniowac wlasna funkcje search() (Przynajmniej powinienes moc, nie sprawdzalem w praktyce)
_________________
 
 
     
Mrocza 


Twoja ulubiona misja: Swobodna na Ziemi
Pomógł: 4 razy
Wiek: 26
Dołączył: 29 Sie 2011
Posty: 249
Skąd: Lublin
Wysłany: 25-09-2011, 17:02   

Chyba łatwiej byłoby po prostu użyć tej funkcji kilkukrotnie. Jeżeli w tablicy elementów jest niewiele.
 
 
     
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: 25-09-2011, 19:57   

Pomysl w ten sposob: jesli pojdziesz ta trudniejsza droga to wiecej sie nauczysz. Pozniej bedziesz mogl znalezc jeszcze latwiejsza droge dzieki temu, ze wczesniej poszedles trudniejsza. Zreszta kazda osobna funkcja oznacza duzo czytelniejszy program.
_________________
 
 
     
Mrocza 


Twoja ulubiona misja: Swobodna na Ziemi
Pomógł: 4 razy
Wiek: 26
Dołączył: 29 Sie 2011
Posty: 249
Skąd: Lublin
Wysłany: 27-09-2011, 17:34   

Nie wiem nawet jak mam się zabrać za robienie takiej funkcji.
 
 
     
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: 27-09-2011, 21:37   

2min ze stoperem w reku:

Kod:
extern void object::Rotfl()
{
object p;
int list[];
list[0] = Me;
list[1] = AlienSpider;
while(SA(list, position) != null)
{
p = SA(list, position);
turn(direction(p.position));
fire(1);
}


}

object SA(int [] list, point c)
{
   object p = null;
   object res = null;
   int i;
   float d = 1000;
   for(i = 0; i < sizeof(list); i++)
   {
      if(list[i] == nan) continue;
      p = search(list[i], c);
      if(p != null)
      {
         if(distance2d(p.position, c) < d)
         {
            d = distance2d(p.position, c);
            res = p;
         }
      }
   }
   return res;
}


Dobry przyklad jak uzywac tablic jako parametrow funkcji. Zapisac, oprawic i codziennie calowac.
_________________
 
 
     
Mrocza 


Twoja ulubiona misja: Swobodna na Ziemi
Pomógł: 4 razy
Wiek: 26
Dołączył: 29 Sie 2011
Posty: 249
Skąd: Lublin
Wysłany: 27-09-2011, 22:47   

Zaimponowałeś mi. Szacunk :shock:

[ Dodano: 27-09-2011, 22:47 ]
Zaimponowałeś mi. Szacunek :shock:
 
 
     
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: 28-09-2011, 00:48   

Akurat to co Berserker napisał to jest łatwiejszy sposób. Trudniejszym ale możliwym jest wyznaczenie fragmentu koła.
angle = direction(pos);
dist = distance2d(pos);
I podstawiamy do radar(...) dodając jakiś margines, zależny od tego jak daleko ma to działać. Jednak to w dalszym ciągu podaje najbliższą robotowi a nie danemu punktowi. Jedyne wyjście to retobject(...) ale to jeszcze mniej wydajne niż search(...).


Berserker napisał/a:
Zapisac, oprawic i codziennie calowac.
Na pierwszy rzut oka przeczytałem "całkować"...
_________________
1Tbps Project && Telecomix Network

 
 
     
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: 28-09-2011, 15:35   

Ja przedstawilem droge trudniejsza jesli chodzi o uzyte struktury. Jak ktos tego nie rozumie to moze sie meczyc wykorzystujac narzedzia od trygonometrii po calki, zeby w radarze sie bawic, co jest latwiejsze ale bardziej czasochlonne :S A tak to jest elegancka funkcja.
_________________
 
 
     
Mrocza 


Twoja ulubiona misja: Swobodna na Ziemi
Pomógł: 4 razy
Wiek: 26
Dołączył: 29 Sie 2011
Posty: 249
Skąd: Lublin
Wysłany: 29-09-2011, 09:58   

Ja jestem za rozwiązaniem Berserkera.

Kiedyś stanie się ono integralną częścią programu GrabersDefender.
Oczywiście za zgodą autora.
 
 
     
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: 29-09-2011, 15:37   

E? Prawa autorskie? Do jednej funkcji? A bierz, co chcesz.
_________________
 
 
     
Wyświetl posty z ostatnich:   

Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Polski Portal COLOBOTa © 2008 - 2012