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
Przekazywanie zmienniej między robotami?
Autor Wiadomość
FE4R 


Twoja ulubiona misja: Saari - Inwazja
Pomógł: 4 razy
Wiek: 24
Dołączył: 21 Paź 2009
Posty: 144
Wysłany: 28-11-2009, 22:46   Przekazywanie zmienniej między robotami?

Hej,

Chciałem się zapytać, czy 2 roboty mogą przekazywać sobie liczby i je wykorzystywać.
Może przedstawię to na przykładzie, który chcę wykorzystać.

Jeden robot jeździ po okolicy, póki nie skończy mu się energia(nie pytajcie, po co jeździ...)
Drugi robot - WingedGrabber - czeka.

I teraz chciałem się zapytać, czy można zrobić tak, aby jeżdząc Bot wysłał do Grabbera numer, dajmy na to: '1555', typu int.

Grabber interpretuje 1555 jako wezwanie o nowe ogniwo elektryczne.

Tymczasem, gdy jeżdzący robot zostanie zaatakowany, wyśle numer 1556, typu int, dzięki któremu Grabber zrobi coś innego - podejmie jakąś akcję obronną... wyśle osłaniacza albo działo...

Miałem koncepcję prostego programu:

Kod:
int received; //nie wiem jak sprawić, żeby roboty się komunikowały i wysyłały zmienną między sobą

if(received == 1555)
{

instrukcje do zamiany ogniwa...

}


Jakieś propozycje?[/code]
 
     
shoter


Dołączył: 24 Gru 2008
Posty: 56
Wysłany: 28-11-2009, 23:36   

public class komunikat
{
static public int wartosc;
}

//teraz kod do funkcji glownej robota ktory se jezdzi(w petli jezdzacej)
komunikat robot ;
if(energyCell.energyLevel == 0) robot.wartosc = 1555;
//kod dla drugiego robota
komunikat robot;
while(robot.zmienna != 1555) {}
instrukcje_po_skonczeniu_energi();

//static powoduje ze niezalezenie od wywolywanej instnacji zmienna sie nie zmienia w zaleznosci od wybranej klasy :)
 
     
FE4R 


Twoja ulubiona misja: Saari - Inwazja
Pomógł: 4 razy
Wiek: 24
Dołączył: 21 Paź 2009
Posty: 144
Wysłany: 29-11-2009, 11:09   

@EDIT: No i entuzjazm prysł. >.>

Pojawia się błąd: Obiekt nieznany. Od razu w robocie Grabberze i po skończeniu się energii u robota wykonującego pętlę.

Zrobiłem to tak:

Robot jeżdżący:

Kod:
public class komunikat
{
static public int wartosc;
}


extern void object::Main()
{

while(true)
{

goto(tam i tutaj); // ;)

komunikat robot;

if(energyCell.energyLevel == 0) robot.wartosc = 1555;

}
}


Kod Grabbera:

Kod:
extern void object::Secondary()
{

while(true)
{

komunikat robot;
while(robot.zmienna != 1555) wait(1);

Instrukcje do zmiany ogniwa...

}
}


@EDIT2:

Czy jest jakiś sensowny poradnik, tłumaczący, co naprawdę znaczy 'klasa', do czego służy, dlaczego funkcje nazywają się metodami, na jakich zasadach to funkcjonuje i kiedy wraca pipok? :P :)
 
     
shoter


Dołączył: 24 Gru 2008
Posty: 56
Wysłany: 29-11-2009, 14:38   

polceam książke symfonia c++ :D (lepsze)
lub : http://xion.org.pl/files/texts/mgt/html/1_6.html (gorsze)
 
     
FE4R 


Twoja ulubiona misja: Saari - Inwazja
Pomógł: 4 razy
Wiek: 24
Dołączył: 21 Paź 2009
Posty: 144
Wysłany: 29-11-2009, 16:18   

To wcale nie rozwiązało problemu takiego, że wyświetla mi błąd w Colobocie...
 
     
shoter


Dołączył: 24 Gru 2008
Posty: 56
Wysłany: 29-11-2009, 19:21   

juz wiem w czym problem!!

zmienne nie zostały zainicjalizowane wartościami :)
second :
komunikat robot();
while(robot.zmienna != 1555) wait(1);
main :
komunikat robot();

if(energyCell.energyLevel == 0) robot.wartosc = 1555;

reszta jest dobrze tylko te linijki sa zle .amen! :D
 
     
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: 29-11-2009, 20:34   

Tym się pobaw: http://www.colobot.yoyo.p...php?p=6042#6042
_________________
1Tbps Project && Telecomix Network

 
 
     
FE4R 


Twoja ulubiona misja: Saari - Inwazja
Pomógł: 4 razy
Wiek: 24
Dołączył: 21 Paź 2009
Posty: 144
Wysłany: 29-11-2009, 20:46   

Linki do kodów nie istnieją.
Ale pobawię się save'm.
 
     
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: 29-11-2009, 21:16   

W save'ie są wszystkie kody, w pastebinie były nieaktualne :)
_________________
1Tbps Project && Telecomix Network

 
 
     
FE4R 


Twoja ulubiona misja: Saari - Inwazja
Pomógł: 4 razy
Wiek: 24
Dołączył: 21 Paź 2009
Posty: 144
Wysłany: 29-11-2009, 23:31   

Trochę to trudno zrozumieć w kontekście mojego problemu.
A shoter dodałem nawiasy i tym razem jest błąd, że zmienna nie została zainicjalizowana.
 
     
shoter


Dołączył: 24 Gru 2008
Posty: 56
Wysłany: 30-11-2009, 08:37   

zmien definicje klasy

public class komunikat
{
static public int wartosc = 0;
}
zainicjalizujemy w takim razie zmienna =D
 
     
FE4
Gość


Wysłany: 30-11-2009, 08:42   

To będzie dłuuuuuuuga edukacja o klasach. ;)
No cóż. Dzięki shoter. ^_^ Jestem wdzięczny.
 
     
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-11-2009, 13:52   

Klasy sa proste, beznadziejne i potrafia wywalic gre O_O.

-- wiem, ze spam, ale musialem dodac swoje 3 grosze :>
_________________
 
 
     
shoter


Dołączył: 24 Gru 2008
Posty: 56
Wysłany: 30-11-2009, 15:42   

Berserker napisał/a:
Klasy sa proste, beznadziejne i potrafia wywalic gre O_O.

-- wiem, ze spam, ale musialem dodac swoje 3 grosze :>

hmm...w tym problem że klasy są złożone i zajebsite...Gratuluje jeśli tylko w CBocie programujesz tylko li wyłącznie funkcyjnie.Mi nigdy nie zdarzały się problemy z obiektami ^^.Raz zrobiłem klase która zapisywała wszystkie dane o przeciwnikach na dysk i wykorzystywała je dla patrolów dla kilku robotów(mam nadal ten program).
 
     
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-11-2009, 15:57   

Cytat:
hmm...w tym problem że klasy są złożone i zajebsite...Gratuluje jeśli tylko w CBocie programujesz tylko li wyłącznie funkcyjnie.

Klasy sa proste - nauczylem sie nimi poslugiwac w 1 dzien.
Beznadziejne - potrafia stworzyc mnostwo problemow a byle bledu mozna szukac w programach trzech robotow.
Potrafia wywalic gre - mi czesto wywalaja przy wczytywaniu save'a, potrafi to zdenerwowac.

Ale przyjemnie sie oglada gonitwe 6 dzial na kolach goniacych w jakistam zorganizowany sposob jednego transportera. Chyba, ze sie spartoli program do uciekania.
_________________
 
 
     
Wyświetl posty z ostatnich:   

Wersja do druku

Skocz do:  

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