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

TanatosBot - 14-08-2009, 23:53
Temat postu: Boom
Chce napisac program dla robota, który wybucha po kilku sekundach załóżmy po 5. Pomożecie ? :-D
jedrus113 - 15-08-2009, 03:50

To napisz. Ale jak on ma wybuchać? Ma se sam tworzyć mine?
adiblol - 15-08-2009, 10:53

Autodestrukcja? Napiszę program pod koniec miesiąca.
TanatosBot - 15-08-2009, 16:38

Tak, autodestrukcja z 5 sekundowym opóźnieniem.
DemoLisH - 16-08-2009, 21:04

tu masz funkcje, napisałem ją w 5min
Kod:
void object::DestroyMe(float czas)
{
int timeNow=abstime();
point minePos;
while(position.z-topo(position)>0) jet(-1);

while(abstime()-timeNow<czas)continue;
minePos.x=position.x+cos(orientation)*2;
minePos.y=position.y+sin(orientation)*2;
minePos.z=position.z;
produce(minePos,0,Mine,"");
move(2);
}

TanatosBot - 24-08-2009, 14:01

Niedziała
Zamiast DestroyedMe jest napisane <sens non> i nic nierobi.

colobotwymiiata - 24-08-2009, 14:28

To jest FUNKCJA. Wywołujesz ją z głównego programu, nie jako główny program...

Jeśli chcesz jako program, masz:

Kod:
extern void object::DestroyMe()
{
int timeNow=abstime();
point minePos;
while(position.z-topo(position)>0) jet(-1);

while(abstime()-timeNow<5)continue;
minePos.x=position.x+cos(orientation)*2;
minePos.y=position.y+sin(orientation)*2;
minePos.z=position.z;
produce(minePos,0,Mine,"");
move(2);
}


Sorry za błąd zapędziłem sie :oops:

DemoLisH - 25-08-2009, 11:26

colobotwymiiata źle napisałeś, bo jak możesz w funkcji głównej wkładać argumenty!?

zastosowanie funkcji w programie wygląda następująco:
Kod:

extern void object::Program()
{
 DestroyMe(5); //zabij sie po 5 sekundach
}

void object::DestroyMe(float czas)
{
 int timeNow=abstime();
 point minePos;
 while(position.z-topo(position)>0) jet(-1);

 while(abstime()-timeNow<czas)continue;
 minePos.x=position.x+cos(orientation)*2;
 minePos.y=position.y+sin(orientation)*2;
 minePos.z=position.z;
 produce(minePos,0,Mine,"");
 move(2);
}

shoter - 25-08-2009, 12:45
Temat postu: można
można ...wystarczy że funkcja będzie publiczna(bądź czas to argument domniemany) i wywołamy ją z innego robota(nie wiem ale chyba się da z tego co pamiętam ^^)
pipok - 25-08-2009, 14:27

DemoLisH napisał/a:
colobotwymiiata źle napisałeś, bo jak możesz w funkcji głównej wkładać argumenty!?
Funkcja główna może pobierać argumenty, np. z wiersza poleceń. W języku używanym w COLOBOCIE obsługę takich argumentów można zrobić w taki sposób:
Kod:
extern void object::DestroyMe()
{
    float  czas;

    czas = cmdline(0);
    ...
wówczas w pliku 'scene01.txt' wystarczy wywołać program główny w taki sposób:
Kod:

CreateObject pos= -30; 163 dir=0 type=AlienAnt script1="suicide.txt" run=1  cmdline=  5;

DemoLisH - 25-08-2009, 16:10

ale Wy jestescie dziwni
Bartek c++ - 26-08-2009, 19:24

Możebyć też i to poco sie trudzić

produce(position,0,Mine,"");
move(-2);
move(2);

nikt o tym nie pomyślał. 8-)


// WTF?! Pisanie postów przez gości miało być wyłączone...

Schocker - 26-08-2009, 20:00

@Bartek C++, a gdzie tam jest
Cytat:
[...] wybucha po kilku sekundach, załóżmy po 5[...]

? Tutaj chodzi właśnie o to kilka sekund.

BTW: jak tylko będzie admin, niech definytywanie wyłąćzy pisanie przez gości we wszystkich działach. @Bartek C++: Masz bana, tak omijasz zabezpieczenia, a to jest złe. W tej wersji phpBB, ew. w którymś modzie pewnie są możliwe bany na IP.


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