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

Problemy [programowanie] - aim - jak dobrze strzelić

shoter - 24-12-2008, 13:38
Temat postu: aim - jak dobrze strzelić
mam 2 pytania :
1(raczej łatwe) jak zrobić aby lufa działka skręcała w lewo/prawo
2.Jak zrobić w prosty i zoptymalizowany sposób aby mniej więcej dokładnie za pośrednictwem aim() wycelować w jakiś obiekt/punkt?


///Błędy! - DeiDara

DemoLisH - 24-12-2008, 14:05
Temat postu: RE: aim - jak dobrze strzelić
1. nie da się
2. funkcja oblicza kąt do obiektu
Kod:
float directionZ(point a,point b )
{
return asin((b.z-a.z)/distance(a,b ));
}


point a - to twoja pozycja
point b - pozycja obiektu do którego chcesz wycelować

przykład
object wrog=radar(AlienAnt);
aim(directionZ(position,wrog.position)-pitch);


///Błędy! - DeiDara

shoter - 24-12-2008, 16:10
Temat postu: RE: aim - jak dobrze strzelić
żeby nie tworzyć nowego tematu(dzięki za kod ;) ).
Jakie są sposoby komunikacji między robotami?Chciałbym aby roboty umiały wiedzieć co inne robią i czego chcą.Na razie stworzyłem klasę na rzecz robotów naziemnych do zwalczania mrówek które walczą z mrówami,jeśli nawiążą kontakt przyjaciele przyjeżdżają z pomocą. :) .Cały kod jest schowany w robocie 'matce' (^^) która posiada funkcje publiczne które inne roboty wykorzystują.
Dzięki twojej pomocy roboty nareszcie nabiorą celności(Niestety mogły działać tylko na płaskim terenie a to nie było mi na rękę).Może jutro wrzucę tutaj kod jeśli ktoś by chciał...

jeśli chodzi o pytanie to chciałbym wiedzieć czy można zdeklarować jakąś zmienna która będzie widoczna dla każdego robota('matka' mogłaby tą zmienną przetrzymywać i dać jakiemuś robotowi zadanie ratowania robota(Jak wszystkie lecą w jedno miejsce to trochę niechlujnie a chciałbym stworzyć jakiegoś robota wydającego polecenia)


///Błędy! - DeiDara

DemoLisH - 24-12-2008, 22:29
Temat postu: RE: aim - jak dobrze strzelić
można zapisywać informacje do pliku i je wczytać

///Błędy! - DeiDara

lukas_j - 26-12-2008, 11:04
Temat postu: RE: aim - jak dobrze strzelić
można sprawdzać czy np. mrówka jest od robota w odległości np. 50 lub mniej, i jesli tak to robot leci w stronę robota


///Błędy,polskie znaki istnieją! - DeiDara

adiblol - 02-01-2009, 19:13
Temat postu: RE: aim - jak dobrze strzelić
Cytat:
jeśli chodzi o pytanie to chciałbym wiedzieć czy można zdeklarować jakąś zmienna która będzie widoczna dla każdego robota('matka' mogłaby tą zmienną przetrzymywać i dać jakiemuś robotowi zadanie ratowania robota(Jak wszystkie lecą w jedno miejsce to trochę niechlujnie a chciałbym stworzyć jakiegoś robota wydającego polecenia)


Przecież statyczne pola klasy to zapewniają.

///Błędy! - DeiDara

Porost - 09-01-2009, 15:31
Temat postu: RE: aim - jak dobrze strzelić
Witam, miałem ten sam problem co shoter. Spróbowałem użyć tego sposobu, ale uczyć się C-BOTa zacząłem dopiero niedawno i chyba nie rozumiem...

Gdzie mam to wstawić i co podmienić na co? W co to wziąć?

EDIT: Dobra, załapałem. Działa, tylko dziwnie nieprecyzyjnie - celuje kilka stopni za wysoko, przez co na dystansach większych niż kilkanaście metrów robot zwyczajnie pudłuje.
EDIT2: Naprawiłem dodając na końcu "-5". Nie jest to idealne rozwiązanie, ale celność znacznie poprawiło.

Poza tym mam jeszcze parę problemów:

1. Jak zrobić, by robot przemieścił się w punkt o określonej odległości do danego obiektu? Wiem, jak to zrobić za pomocą move, ale zależy mi by robot omijał przeszkody.

EDIT3: Udało się za pomoca kombinacji move i jet, ale ma to kilka wad:
1.jak przegrzeje mu się reaktor, to program świruje
2.to samo jak wpadnie na drzewo/górę
3.albo jak wleci w te zielone kuliste cosie, w których nie można latać.
4.nadaje się tylko dla latających
5.jest strasznie energochłonny

EDIT4: problemy 2 i 3 rozwiązane - wystarczy lecieć wyżej.

Jest możliwe wykonanie tego inaczej?

2. Próbowałem zrobić coś, co sprawdzałoby czy dany robot ma zwykłą baterię, czy atomową:

Kod:
if((this.energyCell.category=PowerCell)=true)
{
}


Wywala mi błąd, że energyCell to "private element". Nie wiem, co to znaczy.

Może jakieś znaczenie ma to, ze gram w demo Colobota? Pełną wersję będę miał dopiero za kilka dni.


///Niema takiego słowa jak energorzerny! - DeiDara

DemoLisH - 12-01-2009, 11:10
Temat postu: RE: aim - jak dobrze strzelić
Cytat:
if((this.energyCell.category=PowerCell)=true)
{
}


Zapomniałeś ze znak równości, w języku C się pisze tak == a nie tak =

a Ty zrobiłeś to tak jak byś chciał przypisać do tej wartości

poprawiony skrypt wygląda następująco
Cytat:
if((this.energyCell.category==PowerCell)==true)
{
}


A tak w ogóle to po co na końcu "true", można zostawic puste miejsce i będzie działało zupełnie tak samo

///OMG Błędy! - DeiDara

Porost - 12-01-2009, 13:40
Temat postu: RE: aim - jak dobrze strzelić
Dzięki, wiedziałem że to musi być jakaś drobnostka :p

Powered by phpBB modified by Przemo & WRIM © 2003 phpBB Group