Gość (83.4.*.*)
Misja „Pożegnanie z Ziemią – Plan B” w grze Colobot: Gold Edition to jeden z tych momentów, w których gracze muszą wykazać się nie tylko logiką, ale i precyzyjnym zrozumieniem języka CBOT. Programowanie robotów w tej kultowej produkcji przypomina pisanie w C++ lub Javie, co dla wielu jest świetnym wstępem do prawdziwego kodowania. Problem z przesłaniem pustej informacji do stacji przekaźnikowej często wynika nie z samego błędu w składni, ale z odpowiedniego umieszczenia kodu w strukturze programu robota.
Zanim przejdziemy do wpisywania komend, warto zrozumieć, co właściwie robi linijka send("", 0);. Funkcja send służy do komunikacji między obiektami. Pierwszy parametr (w tym przypadku pusty cudzysłów "") to treść wiadomości, a drugi (cyfra 0) to kanał komunikacyjny lub identyfikator odbiorcy. W misji „Plan B” stacja przekaźnikowa oczekuje na jakikolwiek sygnał na konkretnym kanale, aby aktywować kolejny etap zadania. Pusta informacja jest tutaj traktowana jako „ping” – sygnał kontrolny, który mówi urządzeniu: „Jestem tutaj, działaj”.
Użycie słowa kluczowego extern przed definicją funkcji jest kluczowe. Informuje ono kompilator gry, że ta funkcja ma być dostępna z zewnątrz, co pozwala skryptom misji lub innym obiektom na jej wywołanie.
Aby poprawnie wykonać to zadanie, musisz wykonać kilka kroków w interfejsie programowania robota:
extern void object::Nowy()
{
send("", 0);
}
Warto zauważyć, że sama definicja funkcji Nowy() nie sprawi, że robot natychmiast wyśle sygnał. Musisz ją wywołać. Możesz to zrobić, dodając funkcję Nowy(); wewnątrz głównej pętli programu void main(), lub po prostu uruchamiając program, jeśli misja została zaprojektowana tak, by system sam szukał funkcji o tej nazwie.
W Colobot: Gold Edition nazewnictwo funkcji w misjach fabularnych bywa narzucone odgórnie przez twórców mapy. Jeśli instrukcja misji mówi wyraźnie o funkcji Nowy(), gra prawdopodobnie posiada wewnętrzny skrypt, który „nasłuchuje”, czy obiekt o danej nazwie wykonał konkretną akcję. Jeśli zmienisz nazwę na np. WyslijSygnal(), skrypt misji może nie zaliczyć zadania, mimo że technicznie kod będzie poprawny.
Czy wiesz, że Colobot (Colonize with Bots) został wydany pierwotnie w 2001 roku jako gra edukacyjna mająca uczyć programowania? Wersja Gold Edition to projekt open-source rozwijany przez społeczność, który dostosował grę do nowoczesnych systemów operacyjnych, poprawił tekstury i dodał wsparcie dla wyższych rozdzielczości. Dzięki temu CBOT, mimo upływu lat, wciąż jest świetnym narzędziem do nauki podstaw algorytmiki.
Jeśli po wpisaniu kodu nic się nie dzieje, sprawdź następujące kwestie:
0, niektóre wersje tej misji lub modyfikacje mogą wymagać innego numeru kanału. Warto sprawdzić opis misji w dzienniku (klawisz F1).send("", 0);. To najczęstszy powód, dla którego programy w Colobocie odmawiają posłuszeństwa.Jeśli wszystko zostało wpisane poprawnie, stacja przekaźnikowa powinna odebrać sygnał, co zostanie zasygnalizowane komunikatem radiowym lub zmianą celu misji na mapie. To mały krok w kodzie, ale wielki skok dla powodzenia „Planu B”!