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
Forum - Polski Portal COLOBOTa
Strona głównaStrona główna UżytkownicyUżytkownicy GrupyGrupy StatystykiStatystyki


Poprzedni temat «» Następny temat
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
Wysłany: 30-01-2011, 12:07   

Bo napisałeś void a ty chcesz zwrócić float...
_________________
http://projektsimbax.blogspot.com/ <- Taki sobie blog
 
     
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.
 
     
Wyświetl posty z ostatnich:   

Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Polski Portal COLOBOTa © 2008 - 2012