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

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.

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