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 |
|
|
Zmienna i wiele bloków funkcji. |
Autor |
Wiadomość |
bbiidduull
Dołączył: 09 Lut 2009 Posty: 140
|
Wysłany: 29-01-2011, 18:17 Zmienna i wiele bloków funkcji.
|
|
|
Mam program do tworzenia tytanu. Każda z czynności (szukanie rudy,konwertera,wolnego miejsca i ładowanie) są jako oddzielne funkcje. Chciałbym zrobić tak iż miał bym 2 zmienne typu float, na początku trasy zapisywał bym stan paliwa i na końcu, po czym odjął bym je poznając zużytą ilość paliwa po jednym cyklu. Myślałem żeby dać w głównym bloku programu powiedzmy:
Kod: |
float a,b;
while(true)
{
ladowanie(50);
a=energyCell.energyLevel;
szukaj_rudy();
szukaj_konwerter();
szukaj_miejsce();
b=a-energyCell.energyLevel;
}
|
ale nie wiem, jak przenieść wynik zmiennej "b" do funkcji ladowanie(); aby tam sprawdzić odpowiedni warunek. |
|
|
|
|
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: 29-01-2011, 18:26
|
|
|
Za pomoca kreatywnosci, ja bym albo (prostsza wersja) przekazywal jako argument funkcji, albo (trudniejsza) za pomoca wskaznikow do klasy, jesli bys chcial przekazywac cos jeszcze, niestety w cbocie nie ma zmiennych globalnych. |
_________________
|
|
|
|
|
bbiidduull
Dołączył: 09 Lut 2009 Posty: 140
|
Wysłany: 29-01-2011, 18:34
|
|
|
Jako argument funkcji, czyli ze np funkcja "szukaj_rudy();" po wykonaniu tej funkcji zwróci mi liczbę paliwa którą ta funkcja zużyła, a potem w funkcji "ladowanie();" dokonać obliczeń? |
|
|
|
|
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: 29-01-2011, 18:49
|
|
|
W ogole potrzebujesz w funkcjach z serii szukaj_* informacji ile energii zuzyles? Jesli nie, to po prostu tworzysz w funkcji ladowanie() dodatkowy argument i jesli potrzebujesz to dajesz jej zwracanie wyniku jakichs tam niesamowicie potrzebnych obliczen, albo tworzysz klase, instancje i kazdej funkcji przekazujesz wskaznik do niej, wtedy nie musisz nic zwracac. |
_________________
|
|
|
|
|
krzys_h
Twoja ulubiona misja: Wszystkie :)
Pomógł: 3 razy Wiek: 20 Dołączył: 12 Gru 2010 Posty: 255 Skąd: Łódź
|
Wysłany: 29-01-2011, 19:23 Re: Zmienna i wiele bloków funkcji.
|
|
|
Myśle, że o to ci chodziło:
Kod: |
float a,b=0;
while(true)
{
ladowanie(b);
a=energyCell.energyLevel;
szukaj_rudy();
szukaj_konwerter();
szukaj_miejsce();
b=a-energyCell.energyLevel;
}
|
|
|
|
|
|
bbiidduull
Dołączył: 09 Lut 2009 Posty: 140
|
Wysłany: 30-01-2011, 11:52
|
|
|
Czemu wyskakuje błąd (podświetla return) przy kompilacji "Zły typ dla przypisania"?
Kod: |
void object::szukaj_rudy()
{
float paliwo_start;
paliwo_start=energyCell.energyLevel;
object ruda;
ruda=radar(TitaniumOre);
goto(ruda.position);
grab();
return paliwo_start;
}
|
P.S. ehh głupi błąd... zapomniałem zmienić z void na float.. |
|
|
|
|
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
|
|
|
|
|
bbiidduull
Dołączył: 09 Lut 2009 Posty: 140
|
Wysłany: 30-01-2011, 12:21
|
|
|
A mam taki teraz problem że omija mi jedną funkcje (szukaj_konwerter();). Po odpaleniu programu od razu jak znajdzie rude, przenosi ją w okolice flagi (szukaj_miejsce();). Co może być nie tak? |
|
|
|
|
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: 30-01-2011, 12:25
|
|
|
W funkcji na poczatku masz break albo return, jak nie znajdziesz to daj ta funkcje. |
_________________
|
|
|
|
|
bbiidduull
Dołączył: 09 Lut 2009 Posty: 140
|
Wysłany: 30-01-2011, 12:36
|
|
|
Funkcja ładowanie(); wszystko psuje. Zrobiłem normalne ładowanie, jak na razie nie ma błędów. W każdym razie dzięki za pomoc. |
|
|
|
|
|
|
| |
|
|
|
|
Polski Portal COLOBOTa © 2008 - 2012 |
|
|