|
Polski Portal COLOBOTa COLOBOT Polish Portal |
|
Ciekawe programy - Nieprzydatny program - Rejestrator wysokości
bbiidduull - 13-02-2009, 11:27 Temat postu: Nieprzydatny program - Rejestrator wysokości Witam. Zrobiłem sobie ten program z nudów i moze komuś się przyda lecz w to wątpię. Rejestruje on największą , najmniejszą i średnia wysokość,. Potrzeba aby go uruchomić robota "matke" albo jak kto woli maciore , robota któremu sprawdzamy wysokość tzn rejestrujemy i stacje przekaźnikową. Zarejestrowaną najwyższą wysokość, i najniższą oraz średnią możecie zobaczyć gdzie ? Oczywiście w stacji przekaźnikowej. Pozdrawiam all
Kod: | extern void object::Rejestrator_Wys()
{
// Rw - Rejestrator wysokosci rejestruje najwyzsza, najnizsza i srednia wysokosc robota
object robot,stacja; // potrzeba do programu
float wys,daneW,daneN; // stacje przekaznikowa
// robota matke i robota ktoremu sprawdzamy wysokosc
point sta;
stacja = radar(ExchangePost);
while(stacja == null)
{
message("Wybuduj Stację przekaźnikową informacji !!!",DisplayError);
return;
}
send("Najwyżej",-999,100000);
send("Najniżej",999,100000);
robot = radar(WingedSniffer); //tu wpisujemy nazwe robota któremu sprawdzamy wysokosc
while(robot == null)
{
message("Nie ma takiego robota !!!",DisplayError);
return;
}
while (true)
{
while(robot != null)
{
wys = robot.position.z;
daneW = receive("Najwyżej",100000);
daneN = receive("Najniżej",100000);
message("Wysyłam Dane... Wysokość to: "+wys+" metrów",DisplayInfo);
if (wys > daneW)
{
send("Najwyżej",wys,100000);
}
else
{
if (wys < daneN)
{
send("Najniżej",wys,100000);
}
}
send("Wys.średnia",(daneW+daneN)/2,100000);
}
message("Straciłem robota z radaru",DisplayError);
return;
}
} |
Program także w załączniku
Abadon - 13-02-2009, 14:44
Hmm nieprzydatny program?...
a właściwie że przydatny (tak to byś z nudów nic nie tworzył czegoś co jest nieprzydatne). Program przyda się zapewnie przy tworzeniu Colobota 2, kiedy np. będzie potrzebna informacja na temat wysokości na której można stwierdzić wysokość "wzgórz" na mapach.
bbiidduull - 13-02-2009, 15:00
No to mi kamień spadł z serca. Mam jeszcze program ze robot staje obok tytanu i jedzie do stacji przekaźnikowej i pokazuje czas w jakim przebył droge i zapisuje najlepszy wynik. Taki o śmiechowy
Abadon - 13-02-2009, 15:03
Hmm to też jest przydatne, w Coloboce 2 można zrobić wyścigi zatem .
DeiDara - 13-02-2009, 22:08
no fajnie to by wyglądało
colobotwymiiata - 20-02-2009, 23:31
A skoro mierzymy już czas i wysokość, daj program , co mierzy prędkość, żeby było do kompletu(to nie sarkazm-program się przyda).
bbiidduull - 20-03-2010, 15:00
Pomyślimy i jak coś to dam na forum
[ Dodano: 17-03-2010, 23:52 ]
Jako że było się młodym i głupim postanowiłem naprawić swoje błędy popełnione za młodu. Tak więc powstała druga wersja tego programu a dokładnie Rec_WysV2 Miłej zabawy.
Kod: | extern void object::Rec_WysV2()
{
file handle();
object robot,alien;
float nW,nM,nWg,nMg,sPal,ePal,sOsl,eOsl;
int sTime,eTime,time,timeend,starttime,bb,cc;
point a,nWp,nMp;
int ant[5];
ant[0] = AlienWorm;
ant[1] = AlienAnt;
ant[2] = AlienSpider;
ant[3] = AlienWasp;
ant[4] = AlienQueen;
nWg=-999;nW=-999;nM=999;time=0;nMg=999;
handle.open("Rejestrator wysokości - dane.txt", "w");
timeend=4; // <------------- po ilu sekundach ma sie wyłaczyc program gdy robot się nie porusza
// <------------- mozna wpisać tylko liczby parzyste !
robot=radar(WingedGrabber);
sPal=robot.energyCell.energyLevel;
sOsl=robot.shieldLevel;
starttime=lifeTime;
while(true)
{
robot=radar(WingedGrabber); // <-------------robot któremu sprawdzamy wysokość
alien=radar(ant);
if(robot==null)
{
message("Ups... nie odnalazłem robota...");
return;
}
if(timeend%2!=0)
{
message("Zmienna timeend przyjmuje tylko liczby parzyste!");
return;
}
if(robot.energyCell.energyLevel<0.2)
{
message("Zaleca się zakonczenia pomiaru ze wzgledu na");
message("niski poziom energii (<20%)");
}
if(robot.shieldLevel<0.2)
{
message("Zaleca się zakonczenia pomiaru ze wzgledu na ");
message("niski poziom osłony (<20%)");
}
if(distance(robot.position,alien.position)<60)
{
message("Zaleca się zakonczenia pomiaru ze wzgledu na");
message("zbliżajace się obce organizmy w promieniu <60 metrów.");
}
if(robot.position.z-topo(robot.position)>nW)
{
nW=robot.position.z;
nWp=robot.position;
nWg=robot.position.z-topo(robot.position);
}
if(robot.position.z-topo(robot.position)<nM)
{
nM=robot.position.z;
nMp=robot.position;
nMg=robot.position.z-topo(robot.position);
}
message("Aktualna wysokość: "+robot.position.z);
sTime=lifeTime;
wait(2);
eTime=lifeTime;
a=robot.position;
wait(0.01);
if(a.x == robot.position.x and a.y==robot.position.y)
{
if(sTime+2==eTime) time=time+1;
if(time==timeend/2)
{
message("Zakończono działanie programu.");
message("Zajrzyj do folderu FILES gry COLOBOT aby zobaczyć wyniki");
break;
}
}
}
ePal=robot.energyCell.energyLevel;
eOsl=robot.shieldLevel;
bb=(lifeTime-starttime)/60;
cc=(lifeTime-starttime)%60;
handle.writeln("Największa zarejestrowana wysokość:");
handle.writeln("->nad poziomem morza: "+nW+" m Pozycja: X="+nWp.x+" Y="+nWp.y);
handle.writeln("->nad poziomem gruntu: "+nWg+" m");
handle.writeln("");
handle.writeln("Najmniejsza zarejestrowana wysokość:");
handle.writeln("->nad poziomem morza: "+nM+" m Pozycja: X="+nMp.x+" Y="+nMp.y);
handle.writeln("->nad poziomem gruntu: "+nMg+" m");
handle.writeln("");
handle.writeln("Czas testu: "+bb+":"+cc+" minut:sekund");
handle.writeln("Zużyta energia podczas testu: "+(sPal-ePal)*100+"%");
handle.writeln("Uszkodzenie osłony : "+(sOsl-eOsl)*100+"%");
handle.close();
} |
|
|