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 |
|
|
CollectTitaniumOre |
Autor |
Wiadomość |
Korniszon
Me Gusta: PPC
Twoja ulubiona misja: Spying...
Pomógł: 1 raz Wiek: 17 Dołączył: 01 Paź 2010 Posty: 108 Skąd: Stamtąd, gdzie ty.
|
Wysłany: 09-10-2010, 11:42 CollectTitaniumOre
|
|
|
A oto program:
Kod: | extern void object::CollectTitaniumOre()
{
while(true)
{
if(energyCell.energyLevel<0.4) lado();
ruda();
huta();
tytan();
spa();
}
}
void object::ruda()
{
object item;
while((item=radar(TitaniumOre))==null)
{
Message("Nie znaleziono rudy. Czekam.");
wait(1);
}
mygoto(item.position);
grab();
}
void object::huta()
{
object conver;
while((conver=radar(Converter))==null)
{
Message("Nie znaleziono huty. Czekam.");
wait(1);
}
mygoto(conver.position);
drop();
move(-2.5);
}
void object::tytan()
{
object titan;
Message("Czekam na wytworzenie tytanu");
do
{
titan=radar(Titanium,0,45,0,5);
}
while(titan==null);
mygoto(titan.position);
grab();
}
void object::spa()
{
Message("Idę do wolnej pozycji");
mygoto(space(position));
errmode(0);
drop();
while(load!=null)
{
Message("Upuszczenie tytanu nie powiodło się");
mygoto(space(position));
drop();
}
Message("Upuszczenie tytanu powiodło się.");
errmode(1);
}
void object::lado()
{
Message("Niski poziom energii. Szukam zasoby energytyczne.");
while(!A() and !B())
{
Message("Uwaga. Nie znaleziono zasobów energytycznych.");
wait(1);
}
Message("Ładowanie zakończone");
}
bool object::A()
{
object station;
int sta[];
sta[0]=PowerStation;
sta[1]=PowerCaptor;
station=radar(sta);
if(station!=null)
{
mygoto(station.position);
while(energyCell.energyLevel<1);
return true;
}
return false;
}
bool object::B()
{
object cell=radar(PowerCell);
if(cell!=null)
{
if(cell.energyLevel>0.75)
{
mygoto(cell.position);
grab();
drop(Behind);
grab(EnergyCell);
drop();
grab(Behind);
drop(EnergyCell);
return true;
}
}
return false;
}
void object::mygoto(point pos)
{
errmode(0);
while(goto(pos)!=0);
errmode(1);
}
void object::Message(string msg)
{
message("(RT) "+category+": "+msg);
}
|
Program działa kojelno etapami:
extern void object::TitaniumC()
{
while(true)
{
Sprawdza stan baterii
Szuka rudę i bierze ją
Szuka huty, jedzie tam, i zostawia rudę
Czeka na tytan i go bierze
Zostawia tytan w wolnym miejscu
}
}
UWAGA: Program był testowany i działa. |
_________________ Nazywajcie mnie KL582 (nick w Minecraft) |
Ostatnio zmieniony przez Korniszon 14-01-2011, 13:42, w całości zmieniany 6 razy |
|
|
|
|
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: 09-10-2010, 11:52
|
|
|
Proszę o wklejenie z wcięciami bo tak nic z tego nie rozumiem.
1. zapisz program z poziomu Colobota
2. otwórz odpowiedni plik: ścieżka\do\colobota\program\nazwa_pod_jaką_zapisałeś.txt
3. skopiuj i wklej na forum w tagu [ code ] |
_________________ 1Tbps Project && Telecomix Network
|
|
|
|
|
Korniszon
Me Gusta: PPC
Twoja ulubiona misja: Spying...
Pomógł: 1 raz Wiek: 17 Dołączył: 01 Paź 2010 Posty: 108 Skąd: Stamtąd, gdzie ty.
|
Wysłany: 09-10-2010, 11:58
|
|
|
Dzięki
Albo:
scieżka_do_colobota/savegame/nazwa_użytkownika/Program/nazwa_programu.txt |
_________________ Nazywajcie mnie KL582 (nick w Minecraft) |
Ostatnio zmieniony przez Korniszon 10-10-2010, 09:26, w całości zmieniany 1 raz |
|
|
|
|
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: 09-10-2010, 12:07
|
|
|
Kod: | void object::mygoto(point pos)
{
errmode(0);
while(goto(pos)!=0);
goto(pos);
errmode(1);
} |
Bez sensu, wykonujesz goto() 2 razy.
Kod: | while(goto(space(position))!=0) |
Wypadaloby wlaczyc moze errmode(0)...
Bardzo mi sie podoba twoj uroczy angielski, zwlaszcza te wstawki "No find...", nie ma to jak poszanowanie dla gramatyki Poza tym, po co te wszystkie message()? To ja musze wiedziec co moj robot wlasnie robi? |
_________________
|
|
|
|
|
Simbax
Mod
Twoja ulubiona misja: Wszystkie na Krystalii
Pomógł: 6 razy Wiek: 22 Dołączył: 07 Sie 2009 Posty: 473 Skąd: z Leszna
|
Wysłany: 09-10-2010, 13:34
|
|
|
@Korniszon Po co się z ang. bawisz, mieszkamy w końcu w Polsce i swój język mamy. Sam używam ang. nazw do zmiennych itd. Ale "mesycze" wypadałoby już po polsku... |
_________________ http://projektsimbax.blogspot.com/ <- Taki sobie blog |
|
|
|
|
Korniszon
Me Gusta: PPC
Twoja ulubiona misja: Spying...
Pomógł: 1 raz Wiek: 17 Dołączył: 01 Paź 2010 Posty: 108 Skąd: Stamtąd, gdzie ty.
|
Wysłany: 10-10-2010, 09:30
|
|
|
@Simbax Poprawiłem
Simbax napisał/a: | mesycze |
Pisze się message'e
@Berserker Poprawiłem. A z tymi message'ami: chciałem sobie żeby mi wyświetlało. Dzięki temu wiem co teraz robot robi. |
_________________ Nazywajcie mnie KL582 (nick w Minecraft) |
|
|
|
|
Apus
Twoja ulubiona misja: 2 pierwsze na Wulkanii
Pomógł: 3 razy Wiek: 19 Dołączył: 09 Kwi 2010 Posty: 246 Skąd: ze wsi
|
Wysłany: 10-10-2010, 14:19
|
|
|
Jakby uruchomić ten program na kilku robotach to by wiadomości od nich tak szybko były zastępowane nowymi że zanim by którąś przeczytał to by znikła z ekranu. |
|
|
|
|
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: 10-10-2010, 15:20
|
|
|
Dla mnie jak robot ma wyeliminowac osy to cecha dobrego programu jest to, ze uruchamiam ten program i o nim zapominam, a chwile pozniej tych os nie ma. Jakby mi spamowal wiadomosciami to bym go w koncu wylaczyl i sam wybil te osy:) |
_________________
|
|
|
|
|
Simbax
Mod
Twoja ulubiona misja: Wszystkie na Krystalii
Pomógł: 6 razy Wiek: 22 Dołączył: 07 Sie 2009 Posty: 473 Skąd: z Leszna
|
Wysłany: 11-10-2010, 16:52
|
|
|
Korniszon napisał/a: | Pisze się message'e |
OK, dzięki za informację. Właśnie się tak zastanawiałem jak to napisać |
_________________ http://projektsimbax.blogspot.com/ <- Taki sobie blog |
|
|
|
|
Korniszon
Me Gusta: PPC
Twoja ulubiona misja: Spying...
Pomógł: 1 raz Wiek: 17 Dołączył: 01 Paź 2010 Posty: 108 Skąd: Stamtąd, gdzie ty.
|
Wysłany: 23-10-2010, 08:59
|
|
|
@Apus & Berserker:
Jak chcecie, mogę wykasować te message'e "spamowe"(jak to Berserker napisał) |
_________________ Nazywajcie mnie KL582 (nick w Minecraft) |
|
|
|
|
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: 23-10-2010, 12:48
|
|
|
Nie tyle, ze chcemy zebys dla nas je wykasowal tylko, zebys nauczyl sie radzic sobie bez nich
Zreszta nie wiem jak ty to wytrzymujesz:
Kod: | while(goto(space(position))!=0)
{
mesage("Wolna pozycja jest zablokowana.");
wait(1);
} |
Co sekunde dowiadujesz sie, ze nie ma robot gdzie pojsc, ciebie w ogole by to obchodzilo? |
_________________
|
|
|
|
|
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: 23-10-2010, 13:59
|
|
|
Najlepiej napisać funcję debug(string msg), która odwoływałaby się do message(...) dodając prefiks - nazwę robota, ale gdybyśmy nie chcieli oglądać komunikatów to można by zawartość funkcji debug(...) wykomentować. |
_________________ 1Tbps Project && Telecomix Network
|
|
|
|
|
Korniszon
Me Gusta: PPC
Twoja ulubiona misja: Spying...
Pomógł: 1 raz Wiek: 17 Dołączył: 01 Paź 2010 Posty: 108 Skąd: Stamtąd, gdzie ty.
|
Wysłany: 24-10-2010, 11:35
|
|
|
@Berserker:
Dobra, dobra, ja umiem posługiwać się bez nich, ale ten program tak ma i już. |
_________________ Nazywajcie mnie KL582 (nick w Minecraft) |
|
|
|
|
|
|
| |
|
|
|
|
Polski Portal COLOBOTa © 2008 - 2012 |
|
|