|
Polski Portal COLOBOTa COLOBOT Polish Portal |
|
Problemy [programowanie] - Zmienna i wiele bloków funkcji.
bbiidduull - 29-01-2011, 18:17 Temat postu: 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 - 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 - 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 - 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 - 29-01-2011, 19:23 Temat postu: 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 - 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 - 30-01-2011, 12:07
Bo napisałeś void a ty chcesz zwrócić float...
bbiidduull - 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 - 30-01-2011, 12:25
W funkcji na poczatku masz break albo return, jak nie znajdziesz to daj ta funkcje.
bbiidduull - 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.
|
|