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ę |
|
|
|
|
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 ;] |
_________________
|
|
|
|
|
|