Oryginalna strona colobot.cba.pl umarła, gdy cba.pl przestało oferować darmowy hosting. To jest statyczny mirror, pobrany w 2018. ~krzys_h
|
Forum - Polski Portal COLOBOTa |
|
|
Zamknięty przez: Bartek c++ 08-09-2010, 16:43 |
CollectUranOre |
Autor |
Wiadomość |
dawid960
Neokid @up: to nieprawda
Twoja ulubiona misja: księżyc
Wiek: 17 Dołączył: 12 Gru 2009 Posty: 133 Skąd: z matrixa ( XD )
|
Wysłany: 08-09-2010, 12:29 CollectUranOre
|
|
|
a oto program
Kod: | extern void object::CollectUranOre()
{
while(true)
{
if(energyCell.energyLevel <= 0.4)
maint();
if(load == null)
retrieveResource(UraniumOre);
else
{
processResource(NuclearPlant);
deliverResource(BotFactory);
}
}
}
void object::retrieveResource(int category)
{
object resource;
while( (resource = radar(category)) == null )
{
message("No UraniumOre found. Standing by...");
wait(10);
}
myGoto(resource.position);
errmode(0);
grab();
errmode(1);
}
void object::processResource(int category)
{
object building;
while( (building = radar(category)) == null )
{
message("No NuclearPlant found. Standing by...");
wait(10);
}
myGoto(triangulate2d(building));
myGoto(building.position);
drop();
move(-3);
wait(35);
move(1.5);
grab();
}
void object::deliverResource(int category)
{
object dest = radar(category);
if(dest == null)
goto(space());
else
{
errmode(0);
if(goto(space(dest.position)) != 0)
goto(space());
errmode(1);
}
drop();
message("NuclearCell delivered.",DisplayInfo);
}
void object::maint()
{
message("Energy level low. Searching for energy sources...");
while(rechargePlanA() == false and rechargePlanB() == false)
{
message("Warning. No energy sources found!");
wait(25);
}
message("Recharge completed. Resuming job duties...", DisplayInfo);
}
bool object::rechargePlanA()
{
int cat[];
cat[0] = PowerStation;
cat[1] = PowerCaptor;
object pwrSource = radar(cat);
if(pwrSource != null)
{
myGoto(triangulate2d(pwrSource));
myGoto(pwrSource.position);
message("Recharging at " + pwrSource.category + "...",DisplayInfo);
while(energyCell.energyLevel < 1)
wait(1);
return true;
}
return false;
}
bool object::rechargePlanB()
{
object cell;
float min = 0;
while( (cell = radar(PowerCell,0,360,min)) != null )
{
min = distance2d(position,cell.position) + 0.5;
if(cell.energyLevel >= 0.5)
{
goto(cell.position);
message("Swapping with better PowerCell...",DisplayInfo);
grab();
drop(Behind);
grab(EnergyCell);
drop();
grab(Behind);
drop(EnergyCell);
return true;
}
}
return false;
}
void object::myGoto(point p)
{
errmode(0);
while(goto(p) != 0)
wait(2);
errmode(1);
}
point object::triangulate2d(object o)
{
point dest = o.position;
dest.x += cos(o.orientation) * 15;
dest.y += sin(o.orientation) * 15;
return dest;
}
|
// brak opisu itd = warn - Bartek c++ |
_________________
kliknij w to, proszę
|
Ostatnio zmieniony przez Bartek c++ 08-09-2010, 18:46, w całości zmieniany 1 raz |
|
|
|
|
Bartek c++
Twoja ulubiona misja: Tropica - Czas na atak
Pomógł: 6 razy Wiek: 20 Dołączył: 07 Lip 2009 Posty: 390
|
Wysłany: 08-09-2010, 13:59
|
|
|
Coś nie wieże że to zrobiłeś Przypomina mi to program z jednej user misji epsiteca. |
_________________
|
|
|
|
|
Berserker
Dark Ness
Twoja ulubiona misja: Ofrenia
Pomógł: 16 razy Wiek: 24 Dołączył: 24 Mar 2009 Posty: 496 Skąd: Bigos
|
|
|
|
|
Bartek c++
Twoja ulubiona misja: Tropica - Czas na atak
Pomógł: 6 razy Wiek: 20 Dołączył: 07 Lip 2009 Posty: 390
|
Wysłany: 08-09-2010, 16:43
|
|
|
A więc temat zostaje zamknięty |
_________________
|
|
|
|
|
|
|
| |
|
|
|
|
Polski Portal COLOBOTa © 2008 - 2012 |
|
|