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 |
 |
 |
Nalot |
Autor |
Wiadomość |
Zibo

Dołączył: 24 Gru 2008 Posty: 8
|
Wysłany: 25-12-2008, 19:02 Nalot
|
|
|
Męczę się i męczę i nie mogę odnaleźć pożądanej funkcji, dzięki której mógłbym wydać rozkaz bot'owi, aby po namierzeniu celu zbliżył się do niego utrzymując ustaloną odległość.
A dokładniej pragnę napisać jakiś ubogi programik dla Shooter'a, aby po ustaleniu pozycji mrówki poleciał do niej i zatrzymał x metrów przed nią.
Jak to osiągnąć?
Halp!
///Pokemonizm! - DeiDara |
Ostatnio zmieniony przez DeiDara 26-02-2009, 08:59, w całości zmieniany 2 razy |
|
|
|
 |
DemoLisH
Zbanowany

Wiek: 24 Dołączył: 20 Kwi 2008 Posty: 273 Skąd: Poznań
|
Wysłany: 26-12-2008, 00:21 RE: Nalot
|
|
|
if(distance(twojaPoz.position, robak.position)<50)
// jeśli dystans dzielący ciebie od mrówki jest mniejszy od 50 to...
{
motor(0,0) // zatrzymuje się
}
///Błędy! - DeiDara |
_________________ Compiling [Gość.exe]...
Zapraszam na grę zwaną League of Legends:
http://signup.leagueofleg...e98cec278372604 |
Ostatnio zmieniony przez DeiDara 26-02-2009, 08:59, w całości zmieniany 1 raz |
|
|
|
 |
Zibo

Dołączył: 24 Gru 2008 Posty: 8
|
Wysłany: 26-12-2008, 18:09 RE: Nalot
|
|
|
No właśnie interesują mnie wcześniejsze instrukcje. W ten sposób nie przyniesie skutku zastosowanie powyższego, bo polecenie goto() musi zostać wykonane do końca (czyli bot siądzie wrogowi na łeb ;] ), aby móc przejść do kolejnego.
Nie robimy tego chyba przy pomocy motor(), bo tracimy możliwość omijania przeszkód (jak przy goto), prawda..?
Wciąż poszukuję kodu do stworzenia masakratora szukającego wroga i strzelającego do niego z ust. odległości. :-] |
Ostatnio zmieniony przez Zibo 26-12-2008, 18:09, 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: 02-01-2009, 19:17 RE: Nalot
|
|
|
Nie możesz używać polecenia goto...
Kod: | float DIST = 40; //podstawiasz odległość przy której się zatrzyma
turn(direction(enemyPos));
if (distance(position,enemyPos)>DIST) motor(1,1); else motor(0,0);
wait(0.1); |
Tylko jest jeden problem - nie wyszukuje automatycznie drogi, ale to jest raczej nieistotne w robotach latających.
|
_________________ 1Tbps Project && Telecomix Network
 |
|
|
|
 |
WRIM

Dołączył: 10 Lut 2008 Posty: 4
|
Wysłany: 10-01-2009, 17:19 RE: Nalot
|
|
|
Rozwiązanie znajduje się na ostatniej misji na Nowej Ziemi w programie osłaniacza. Oblicza on za pomocą pewnych funkcji pozycję 5 metrów za działem fazowym i na tę pozycję się udaje. Generalnie najprościej można zmodyfikować ten program, aby zamiast działa fazowego liczył pozycję mrówki, a dystans wynosił 50m. Jednak tak duża odległość wymagałaby jeszcze kilku poprawek, ale od biedy taki program może być. |
Ostatnio zmieniony przez WRIM 10-01-2009, 17:23, 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: 11-01-2009, 12:03 RE: Nalot
|
|
|
Można też obliczać pozycję tą funkcją: http://colobotpl.pastebin.com/f87a6acc
I sprawdzić jaki kąt powoduje najmniejszą drogę, a później to już tylko goto.
float bestdist=10000;
float bdangle=0;
float dist;
for (float i=0;i<360;i+=10) {
dist=distance(position,PosInFront(enemyPos, i, 40));
if (dist<bestdist) { bestdist=dist; bdangle=i; }
}
goto(PosInFront(enemyPos, bdangle, 40));
Problem pojawia się gdy wyliczenie padnie na miejsce gdzie znajduje się jakaś przeszkoda. Dlatego można zamienić ostatnią linijkę na:
point pos=PosInFront(enemyPos, bdangle, 40);
errmode(0);
while (goto(pos)!=0) {
pos=space(pos);
wait(0.5);
}
errmode(1);
Program nie był testowany. |
_________________ 1Tbps Project && Telecomix Network
 |
Ostatnio zmieniony przez adiblol 11-01-2009, 12:03, w całości zmieniany 1 raz |
|
|
|
 |
|
|
|  |
 |
 |
 |
|
Polski Portal COLOBOTa © 2008 - 2012 |
|
|