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
Forum - Polski Portal COLOBOTa
Strona głównaStrona główna UżytkownicyUżytkownicy GrupyGrupy StatystykiStatystyki


Poprzedni temat «» Następny temat
Przydatne funkcje
Autor Wiadomość
DemoLisH
Zbanowany


Wiek: 24
Dołączył: 20 Kwi 2008
Posty: 273
Skąd: Poznań
Wysłany: 06-01-2009, 23:02   Przydatne funkcje

Podajemy tutaj wszystkie przydatne funkcje ktore napisaliscie, ja zaczne

Kod:
bool isMoving(object a)
{
point s;
s=a.position;
wait(0.01);
if(a.position.x != s.x || a.position.y != s.y || a.position.z != s.z) return true;
else return false;
}


funkcja sluzy do sprawdzenia czy dany obiekt sie porusza, argumentem pierwszym o nazwie "a" jest wlasnie ten obiekt, funkcja zwraca true gdy wykryje, ze obiekt sie porusza, a false jesli stoi w miejscu
_________________
Compiling [Gość.exe]...

Zapraszam na grę zwaną League of Legends:
http://signup.leagueofleg...e98cec278372604
Ostatnio zmieniony przez DemoLisH 06-01-2009, 23:09, w całości zmieniany 1 raz  
 
 
 
DemoLisH
Zbanowany


Wiek: 24
Dołączył: 20 Kwi 2008
Posty: 273
Skąd: Poznań
Wysłany: 12-01-2009, 22:09   RE: Przydatne funkcje

funkcja ktora sprawdza czy obiekt skreca:

Cytat:
bool isTurning(object a)
{
float s;
s=a.orientation;
wait(0.01);
if(abs(s-a.orientation) >1) return true;
else return false;
}
_________________
Compiling [Gość.exe]...

Zapraszam na grę zwaną League of Legends:
http://signup.leagueofleg...e98cec278372604
Ostatnio zmieniony przez DemoLisH 12-01-2009, 22:09, w całości zmieniany 1 raz  
 
 
 
DemoLisH
Zbanowany


Wiek: 24
Dołączył: 20 Kwi 2008
Posty: 273
Skąd: Poznań
Wysłany: 13-01-2009, 17:30   RE: Przydatne funkcje

to jak mam takie funkcje to dorzuce jeszcze 1 małą ktora sprawdza czy obiekt lata:
Cytat:
bool isFlying(object a)
{
if(a.altitude>0) return true;
else return false;
}
_________________
Compiling [Gość.exe]...

Zapraszam na grę zwaną League of Legends:
http://signup.leagueofleg...e98cec278372604
 
 
 
COLOBOT 
Administrator sieci
Założyciel portalu


Twoja ulubiona misja: Obie na Orfenii
Pomógł: 1 raz
Dołączył: 07 Lut 2008
Posty: 353
Skąd: Jarocin
Wysłany: 13-01-2009, 19:13   RE: Przydatne funkcje

Kod:
extern void object::Zapiszobiekt( )
{

string msg, poz;
float dir;
int i;

dir = 2 - (orientation / 180);
if (dir > 1.99) dir = 0.00;

poz = this.position.x+";"+this.position.y;

file plik();
file p2();

if (!plik.open("Obiekty.txt", "r"))
{
plik.open("Obiekty.txt", "w");
plik.writeln("CreateObject pos="+poz+" dir="+dir+" type=");
plik.close();
message(this.position.x+" ; "+this.position.y+" , "+dir);
return;
}
p2.open("Obiekty2.txt", "w");

while(!plik.eof())
{
msg = plik.readln();
if (msg != "") p2.writeln(msg);
}

plik.close();
p2.close();

plik.open("Obiekty.txt", "w");
p2.open("Obiekty2.txt", "r");

while(!p2.eof())
{
msg = p2.readln();
if (msg != "") plik.writeln(msg);
}

plik.writeln("CreateObject pos="+poz+" dir="+dir+" type=");

plik.close();
p2.close();

message(this.position.x+" ; "+this.position.y+" , "+dir);

}

Działanie programu jest następujące: Chodzimy sobie dowolnym robotem i stajemy na miejscu, gdzie chcemy postawić budynek. Następnie odpalamy program i tak dowolną ilość razy. Po zakończeniu zabawy otwieramy plik files/obiekty.txt i tam mamy gotową do wklejenia listę obiektów. Wystarczy tylko wpisać kategorię. Pozycja i orientacja już jest zdefiniowana.
_________________
Bykom STOP
A niechaj narodowie wżdy postronni znają, iż Polacy nie gęsi, iż swój język mają.
Ostatnio zmieniony przez COLOBOT 13-01-2009, 19:15, 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: 13-01-2009, 19:21   RE: Przydatne funkcje

Bardzo przydatne. Nie wpadłbym na to żeby coś takiego zrobić.
_________________
1Tbps Project && Telecomix Network

 
 
 
COLOBOT 
Administrator sieci
Założyciel portalu


Twoja ulubiona misja: Obie na Orfenii
Pomógł: 1 raz
Dołączył: 07 Lut 2008
Posty: 353
Skąd: Jarocin
Wysłany: 13-01-2009, 19:46   RE: Przydatne funkcje

Jeszcze zrobiłem kiedyś programik do zapisywania pozycji (żeby się nie babrać z takimi misjami jak ta na Krystalii "Awaria systemu" z uciekającym robotem).
Kod:
extern void object::Zapiszpozycje( )
{

string msg, poz;
int i;

poz = this.position.x+" , "+this.position.y;
file plik();
file p2();

if (!plik.open("Pozycje.txt", "r"))
{
plik.open("Pozycje.txt", "w");
plik.writeln("goto("+poz+" , 0,1,1);");
plik.close();
message(this.position.x+" , "+this.position.y);
return;
}
p2.open("pozycje2.txt", "w");

while(!plik.eof())
{
msg = plik.readln();
if (msg != "") p2.writeln(msg);
}

plik.close();
p2.close();

plik.open("Pozycje.txt", "w");
p2.open("pozycje2.txt", "r");

while(!p2.eof())
{
msg = p2.readln();
if (msg != "") plik.writeln(msg);
}

plik.writeln("goto("+poz+" , 0,1,1);");

plik.close();
p2.close();

message(this.position.x+" , "+this.position.y);


}

I jeszcze żeby nie babrać się z niestandardowymi teksturami zrobiłem trzeci program, ale sam nie wiem dokładnie jak działa ;).
Kod:
extern void object::Zapisztekstury( )
{

string msg, poz;
int i;

int x, y;
float xx, yy;
xx = this.position.x / 10;
yy = this.position.y / 10;

if (xx < 0) xx = xx - 1;
if (yy < 0) yy = yy - 1;

x = xx;
y = yy;

x *= 10;
y *= 10;

point punkt;
punkt.x = x;
punkt.y = y;

produce(punkt, 0, WayPoint, "");

message(x+" , "+y);
poz = x+"; "+y;
file plik();
file p2();

if (!plik.open("tekstury.txt", "r"))
{
plik.open("tekstury.txt", "w");
plik.writeln("TerrainLevel id=5 center= "+poz+" radius=1");
plik.close();
return;
}
p2.open("tekstury2.txt", "w");

while(!plik.eof())
{
msg = plik.readln();
if (msg != "") p2.writeln(msg);
}

plik.close();
p2.close();

plik.open("tekstury.txt", "w");
p2.open("tekstury2.txt", "r");

while(!p2.eof())
{
msg = p2.readln();
if (msg != "") plik.writeln(msg);
}

plik.writeln("TerrainLevel id=5 center= "+poz+" radius=1");

plik.close();
p2.close();


}
_________________
Bykom STOP
A niechaj narodowie wżdy postronni znają, iż Polacy nie gęsi, iż swój język mają.
 
 
 
DemoLisH
Zbanowany


Wiek: 24
Dołączył: 20 Kwi 2008
Posty: 273
Skąd: Poznań
Wysłany: 13-02-2009, 15:28   

funkcja do szybszego skrecania pojazdem, jest bardzo dokladna

Kod:
void object::turn2(float angle,float speed)
{
float b1,b2;
b1=0; b2=0;
if(angle>0)
{
while( abs(b1) < abs(angle)-speed)
{
turn(speed);
b1=b1+speed;
}
turn(-abs(b1)+abs(angle));
}
if(angle<0)
{
while( abs(b2) < abs(angle)-speed)
{
turn(-speed);
b2=b2-speed;
}
turn(abs(b2)-abs(angle));
}
}
_________________
Compiling [Gość.exe]...

Zapraszam na grę zwaną League of Legends:
http://signup.leagueofleg...e98cec278372604
 
 
     
colobotwymiiata 
Zjem cię


Twoja ulubiona misja: Swobodna na Krystalii
Pomógł: 6 razy
Wiek: 20
Dołączył: 02 Lut 2009
Posty: 329
Skąd: Oleśnica
Wysłany: 20-02-2009, 15:44   

Jak da się zapisać tekstury, to można też robić screenshoty???

PS.:A jak się da, to najlepiej 24 na sekundę 8-)
 
 
     
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: 20-02-2009, 16:56   

Nie tyle screenshoty co zapis położenia wszystkich obiektów. Ale nie ma co później z tym zrobić (chyba żeby zaprogramować coś co pokazuje to na mapce i tworzy film).

Filmowanie ekranu bardzo dobrze robi VirtualDub (menu File -> Capture AVI).
_________________
1Tbps Project && Telecomix Network

 
 
     
colobotwymiiata 
Zjem cię


Twoja ulubiona misja: Swobodna na Krystalii
Pomógł: 6 razy
Wiek: 20
Dołączył: 02 Lut 2009
Posty: 329
Skąd: Oleśnica
Wysłany: 27-03-2009, 18:00   

Hmm.. A jeszcze do tekstur, to jak da się je zapisać, to da się wykryć np. czy są burze elektromagnetyczne?
 
 
     
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: 27-03-2009, 18:56   

colobotwymiiata napisał/a:
A jeszcze do tekstur, to jak da się je zapisać, to da się wykryć np. czy są burze elektromagnetyczne?

CO?
_________________
1Tbps Project && Telecomix Network

 
 
     
colobotwymiiata 
Zjem cię


Twoja ulubiona misja: Swobodna na Krystalii
Pomógł: 6 razy
Wiek: 20
Dołączył: 02 Lut 2009
Posty: 329
Skąd: Oleśnica
Wysłany: 27-03-2009, 19:04   

Skoro program wykrywa jakie są tekstury, to może wykryć linijkę "TerrainBlitz sleep=... delay=... magnetic=..."?
 
 
     
Berserker 
Dark Ness


Twoja ulubiona misja: Ofrenia
Pomógł: 16 razy
Wiek: 24
Dołączył: 24 Mar 2009
Posty: 496
Skąd: Bigos
Wysłany: 27-03-2009, 23:13   

Funkcja sprawdza, czy dowolne dwa rodzaje obiektow sa w odleglosci mniejszej niz jakas tam.
Kod:

bool object::Dist(object obj1, object obj2, float len)
{
int i1, i2;
float dist;
object alien, bot;
i1 = 1;
i2 = 1;
dist = 1000;


while(i2 < 1000 and i1 < 1000)
{
if(i1 == i2)
{
i2++;
}
alien = retobject(i1++);
if(alien == null)
{
continue;
}
bot = retobject(i2++);
if(bot == null)
{
i1--;
continue;
}
if(alien.category != obj1.category)
{
i2--;
continue;
}
if(bot.category != obj2.category)
{
i1--;
continue;
}
if(distance2d(bot.position, alien.position) < dist)
{
dist = distance2d(bot.position, alien.position);
}
}
if(dist > len)
{

return false;
}
else
{
return true;
}

}

@edit
Buahaha wygrywam z wszystkimi funkcjami w dlugosci ;]
 
 
     
colobotwymiiata 
Zjem cię


Twoja ulubiona misja: Swobodna na Krystalii
Pomógł: 6 razy
Wiek: 20
Dołączył: 02 Lut 2009
Posty: 329
Skąd: Oleśnica
Wysłany: 27-03-2009, 23:24   

Całkowicie niekumam tej funkcji(czy to oznacza , że jestem jakiś ciemny?).
 
 
     
Berserker 
Dark Ness


Twoja ulubiona misja: Ofrenia
Pomógł: 16 razy
Wiek: 24
Dołączył: 24 Mar 2009
Posty: 496
Skąd: Bigos
Wysłany: 27-03-2009, 23:50   

Nie, sam jej nie rozumiem najlepiej ;]
Przyklad:
Kod:

object p1, p2;
bool dist;
p1 = radar(AlienWasp);
p2 = radar(PowerCaptor);
dist = Dist(p1, p2, 100);
if(dist == true) costam;
else costam;

Liczy odleglosc os od odgromnikow, jesli najmniejsza mozliwa odleglosc osy od odgromnika (to znaczy osy najblizszej odgromnika) bedzie mniejsza niz 100m, to dobry powod do wyslania eskadry dzial latajacych ;]
_________________
 
 
     
Wyświetl posty z ostatnich:   

Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Polski Portal COLOBOTa © 2008 - 2012