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] - Wykonanie funkcji po unicestwieniu obiektu

bonzaii - 22-07-2009, 14:49
Temat postu: Wykonanie funkcji po unicestwieniu obiektu
Chciałbym zrobić zliczanie posiadanych robotów (najlepiej za pomocą publicznej klasy).

Czy istnieje możliwość, żeby wywołać funkcję gdy mój robot ulega zniszczeniu? (Żeby on tą funkcję wywoływał)

Mam jeszcze na myśli drugi pomysł - zliczanie zabitych mrówek. Dodałbym taki kod do programu mrówki.

adiblol - 22-07-2009, 14:56

bonzaii napisał/a:
Czy istnieje możliwość, żeby wywołać funkcję gdy mój robot ulega zniszczeniu? (Żeby on tą funkcję wywoływał)

W Colobocie nie ma zdarzeń (events) więc nie idzie tego zrobić... ewentualnie można zrobić żeby jakiś robot koordynator wywołał tą funkcję po wykryciu zniszczenia.

bonzaii - 22-07-2009, 16:23

Yhym a w drugą stronę? Jak stworzyć mrówkę, która od razu będzie działała programem swoim? Tworząc poziomy umiem to zrobić, ale w trakcie gry nie bardzo :(

@Edit:

tworzę mrówkę funkcją:
Kod:
produce(position,0,AlienAnt,"mrowka.txt")

mrowka.txt to jakiś skrypt skopiowany z gry dla atakującej mrówki. Jest problem. Pojawia sie jajo (tak mi się wydaje) z którego mrówka się nie chce wykluć. A Tak w ogóle to nie pojawia się nic po za okrągłym cieniem na ziemi (z tego wnioskuję, że to jajo).

Mogę się domyślać, że to 0 jak zamienie na 1 to uruchomi przypisany program, ale pewności nie mam.

A problem z unicestwianiem rozwiązałem kodem dla bota - koordynatora:
Kod:

public int object::Count(int what)
{
    object item;
    int i = 0, total = 0;
   
    while (true)
    {
        item = retobject(i++);
       
        if (item == null) return total;
        if (item.category == what) total ++;
    }
}

Liczy ilość podanych obiektów. W moim przypadku to będą mrówki.
Dać go w pętlę sprawdzaną co sekundę, i jak wartość się zmieni na mniejszą to znaczy, że jakaś mrówka została zabita :)

pipok - 22-07-2009, 19:54

bonzaii napisał/a:
tworzę mrówkę funkcją:
Kod:
produce(position,0,AlienAnt,"mrowka.txt")
Mogę się domyślać, że to 0 jak zamienie na 1 to uruchomi przypisany program, ale pewności nie mam.
Nie, nie. Pierwszy parametr funkcji produce() to położenie tworzonego obiektu, punkt, w którym się znajdzie, a drugi - to kierunek, w którą stronę będzie skierowany.
bonzaii napisał/a:
Jest problem. Pojawia sie jajo (tak mi się wydaje) z którego mrówka się nie chce wykluć. A Tak w ogóle to nie pojawia się nic po za okrągłym cieniem na ziemi (z tego wnioskuję, że to jajo).
Przyjrzyj się swojemu kodowi:
   produce(position,0,AlienAnt,"mrowka.txt");
Mrówka nie pojawia ci się dlatego, że tworzysz ją w tym samym miejscu, w którym stoi bot (królowa?) wykonujący skrypt! To miejsce już jest zajęte.

bonzaii - 22-07-2009, 22:14

pipok napisał/a:
Przyjrzyj się swojemu kodowi:
   produce(position,0,AlienAnt,"mrowka.txt");
Mrówka nie pojawia ci się dlatego, że tworzysz ją w tym samym miejscu, w którym stoi bot (królowa?) wykonujący skrypt! To miejsce już jest zajęte.


Mrówka się moim zdaniem tworzy, bo robię ją robotem podczas latania. To była wina ładowanego skryptu. Znalazłem taki, jaki używa królowa i jest okej :)

pipok - 23-07-2009, 00:27

bonzaii napisał/a:
pipok napisał/a:
Przyjrzyj się swojemu kodowi:
   produce(position,0,AlienAnt,"mrowka.txt");
Mrówka nie pojawia ci się dlatego, że tworzysz ją w tym samym miejscu, w którym stoi bot (królowa?) wykonujący skrypt! To miejsce już jest zajęte.
Mrówka się moim zdaniem tworzy, bo robię ją robotem podczas latania
Tworzyć się tworzy. Tylko, że dokładnie w tym samym punkcie [x;y;z] ją umieszczasz, co bota. To generalnie nie jest dobry pomysł.
Konrad - 24-07-2009, 11:27

Mrówka się "wyprodukuje" nawet jak robot będzie stał na ziemi.

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