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 |
|
|
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? |
|
|
|
|
shoter
Dołączył: 24 Gru 2008 Posty: 56
|
|
|
|
|
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! |
|
|
|
|
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
|
|
|
|
|
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
|
|
|
|
|
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. |
_________________
|
|
|
|
|
|
|
| |
|
|
|
|
Polski Portal COLOBOTa © 2008 - 2012 |
|
|