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

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 :mrgreen: :lol: .
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 :D 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();
}


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