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] - chwytak

Bartek c++ - 09-12-2009, 12:22
Temat postu: chwytak
Jak zrobić program który sprawdza czy robot ma Baterie atomową w chwytaku.Z góry dzięki;)
adiblol - 09-12-2009, 16:58

Jeśli robot ma cokolwiek w chwytaku to warunek:
Kod:
this.load!=null

zwróci true.

Aby sprawdzić, czy ma baterię atomową w chwytaku, należy posłużyć się polem category klasy object:
Kod:
this.load.category==NuclearCell

zwróci true, jeśli w chwytaku jest bateria atomowa.

Uwaga! Należy użyć dwóch warunków, w podanej kolejności! W przeciwnym wypadku program się wykrzaczy, gdyż nie można odwoływać się do pól obiektu, który nie istnieje (ponieważ nie ma nic w chwytaku).

Bartek c++ - 09-12-2009, 17:01

adiblol mało znam się na klasach, możesz jaśniej?
adiblol - 09-12-2009, 17:49

Brain required.
Bartek c++ - 09-12-2009, 17:52

Chciałbym żeby po wykryciu baterii w chwytaku wrócił na statek kosmiczny.
adiblol - 09-12-2009, 19:30

Że się powtórzę: wymagany mózg i IQ nieco powyżej średniej blondynki (nie mam nic do inteligentnych kobiet o blond włosach!), wszystko jest w SatComie, porób ćwiczenia to się nauczysz CBota!
FE4R - 09-12-2009, 22:37

Bartek c++ napisał/a:
adiblol mało znam się na klasach, możesz jaśniej?

Nie ma tutaj nic z klas.

'This' może wskazywać na robota, który wykonuje program, jednak jest to jedynie zabieg kosmetyczny, gdyż robot automatycznie będzie odnosił się do siebie. Więc jeśli ustawisz warunek np:

Kod:
if ( load != null) // jeśli ładunek istnieje
{

instrukcje...

}


Aby sprawdzić jaką kategorię ma ładunek, nie musisz sprawdzać czy istnieje(gdy nie istnieje, warunek po prostu zwróci wartość null). A więc starczy jedynie:

Kod:
if (load.category == NuclearCell) // czy ładunek to ogniwo nuklearne?
{

instrukcje...

}

Bartek c++ - 10-12-2009, 11:23

DZIęki nauczyłem się troche z satcomu ale zamało jeszcze raz dzięki!.
adiblol - 10-12-2009, 17:23

FE4R napisał/a:
Aby sprawdzić jaką kategorię ma ładunek, nie musisz sprawdzać czy istnieje(gdy nie istnieje, warunek po prostu zwróci wartość null).

Niestety nie, program się wykrzaczy z błędem 'obiekt nieznany'.

Bartek c++ - 10-12-2009, 18:10

A jak sprawdzić czy robot jest działem fazowym?
FE4R - 10-12-2009, 18:55

Bartek c++ napisał/a:
A jak sprawdzić czy robot jest działem fazowym?

W jakim kontekście? Bo nie rozumiem.

Berserker - 11-12-2009, 07:22

Kod:
object.category==PhazerShooter

Dopisz se if czy co tam chcesz

Bartek c++ - 11-12-2009, 12:05

dzięki

[ Dodano: 11-12-2009, 13:57 ]
Berserker object tu nie pasuje :-/

Kod:
category==PhazerShooter

poprawka :)

Berserker - 14-12-2009, 08:59

Nie napisałeś czy chodZi o cel czy o robota wykonującego program:)
Bartek c++ - 19-12-2009, 20:55

zrobiłem program(ale narazie testowany) że jeżeli osa będzie miała w łapkach materie organiczną to zaczyna czuwać i celować bardzo dobrze.
COLOBOT - 09-02-2010, 18:57

Dobry pomysł na program dla dział: wystrzelać najpierw te osy, które trzymają materię organiczną, potem resztę. Warto jeszcze dodać, aby działo strzelało w najwolniejszą osę, gdyż to oznacza, że zatrzymuje się ona nad celem.
Bartek c++ - 13-06-2010, 16:07

A dało by się wykryć co ma w miejscu na baterie?
Berserker - 13-06-2010, 16:10

Tak, this.energyCell.category == ?

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