FANDOM


Poniżej znajdziesz wszystkie z programów napisanych przez naszych inżynierów. Aby uruchomić dany program, zaznacz nazwę programu na liście dostępnych dla robota programów (w lewej dolnej części ekranu), a następnie kliknij symbol strzałki.

SwitchCell1Edytuj

Umożliwia on prostszą wymianę ogniw elektrycznych. Naładowane ogniwo elektryczne powinno znajdować się przed robotem, na ziemi.

extern void object::SwitchCell1()
{
	grab(InFront);     // podnieś nowe ogniwo z przodu
	drop(Behind);      // i zostaw je z tyłu
	
	grab(EnergyCell);  // wyjmij ogniwo z robota
	drop(InFront);     // i zostaw je z przodu
	
	grab(Behind);      // podnieś nowe ogniwo
	drop(EnergyCell);  // i włóż je do robota
}

Recharge1Edytuj

Umożliwia on naładowanie ogniwa elektrycznego robota: idzie on do najbliższej stacji energetycznej, czeka 5 sekund, a następnie wraca do pozycji wyjściowej.

Wskazówka: Kliknięcie elementu programu podkreślonego na niebiesko spowoduje wyświetlenie tekstu opisującego ten element na komunikatorze SatCom. Teksty po podwójnych ukośnikach // nie są częścią programu ale komentarzem pozwalającym na lepsze zrozumienie programu.

extern void object::Recharge1()
{
	point  start;          // zmienna pozycji startowej
	object item;           // informacja o stacji energetycznej
	
	start = position;      // zachowaj pozycję startową
	
	item = radar(PowerStation); // znajdź stację
	goto(item.position);   // idź do stacji
	wait(5);               // poczekaj 5 sekund
	
	goto(start);           // wróć do pozycji startowej
}

Recharge2Edytuj

Po dotarciu do stacji energetycznej robot nie czeka już dokładnie 5 sekund, ale tylko do czasu pełnego naładowania ogniwa elektrycznego. Po powrocie na pozycję wyjściową robot wyświetla komunikat na ekranie.

extern void object::Recharge2()
{
	point  start;          // zmienna pozycji startowej
	object item;           // informacja o stacji energetycznej
	
	start = position;      // zachowaj pozycję startową
	
	item = radar(PowerStation); // znajdź stację
	goto(item.position);   // idź do stacji energetycznej
	
	while ( energyCell.energyLevel < 1 )
	{
		wait(1);           // poczekaj aż się naładuje
	}
	
	goto(start);           // wróć do pozycji startowej
	message("Ładowanie zakończone");
}

Recharge3Edytuj

Ten kod został schowany w folderze ai (sztuczna inteligencja przeciwników). Co ciekawe, nigdy go nie dostajemy podczas zwykłej gry, a różni się tylko zamianą stacji energetycznej na orgomit:

extern void object::Recharge3()
{
	point  start;          // variable for initial pos.
	object item;           // info. about power station
	
	start = position;      // store initial position
	
	item = radar(PowerCaptor); // look for station
	goto(item.position);   // go to the power station
	
	while ( energyCell.energyLevel < 1 )
	{
		wait(1);            // wait until recharged
	}
	
	goto(start);           // go back to initial pos.
	message("Recharge completed");
}

CollectTitanium1Edytuj

Poleca on transporterowi wziąć najbliższą porcję rudy i dostarczyć ją do huty.

Aby uruchomić ten program, zaznacz program CollectTitanium1 na liście dostępnych dla robota programów (w lewej dolnej części ekranu), a następnie kliknij symbol strzałki . W każdej chwili można zatrzymać program i przejąć nad nim kontrolę, klikając przycisk stop .

extern void object::CollectTitanium1()
{
	// 1) Definicja zmiennej
	object  item;            // informacja o obiekcie
	
	// 2) Idź do rudy tytanu i podnieś ją
	item = radar(TitaniumOre);// znajdź rudę tytanu
	goto(item.position);     // idź do pozycji
	grab();                  // podnieś porcję rudy
	
	// 3) Idź do huty i zostaw rudę
	item = radar(Converter); // znajdź hutę
	goto(item.position);     // idź do pozycji
	drop();                  // zostaw rudę
	move(-2.5);              // cofnij się o 2,5 m
}

CollectTitanium2Edytuj

Poprzedni program został usprawniony: jeśli to konieczne transporter w drodze powrotnej odwiedza stację energetyczną w celu naładowania ogniwa elektrycznego.

Program ten działa również na transporterze latającym, co może być konieczne jeśli kopalnia jest na innej wyspie niż huta.

extern void object::CollectTitanium2()
{
	// 1) Definicja zmiennej
	object  item;            // informacja o obiekcie
	
	// 2) Idź do rudy tytanu i podnieś ją
	item = radar(TitaniumOre);// znajdź rudę tytanu
	goto(item.position);     // idź do pozycji
	grab();                  // podnieś porcję rudy
	
	// 3) Idź do huty i zostaw rudę
	item = radar(Converter); // znajdź hutę
	goto(item.position);     // idź do pozycji
	drop();                  // zostaw rudę
	move(-2.5);              // cofnij się o 2,5 m
		
	// 4) Naładuj ogniwo elektryczne, jeśli jest w połowie zużyte
	if ( energyCell.energyLevel < 0.5 )
	{                               // jeśli tak:
		item = radar(PowerStation); // znajdź stację energetyczną
		goto(item.position);        // idź tam
		wait(5);                    // poczekaj
	}
}

KillAnt1Edytuj

Uruchomiwszy natychmiast program KillAnt1 na Twoim dziale na kołach, zabezpieczy on Twoją zachodnią flankę. W międzyczasie możesz opracować strategię obrony.

extern void object::KillAnt1()
{
	object item;             // informacja o obiekcie
	
	goto(-30, 0);            // idź na zachód
	aim(0);                  // celuj w poziomie
	
	while ( true )           // powtarzaj w nieskończoność:
	{
		item = radar(AlienAnt, 0, 360, 0, 40);
		if ( item != null )  // wykryto mrówkę?
		{
			turn(direction(item.position));
			fire(0.5);       // strzelaj przez 0,5 s
		}
		wait(1);             // czekaj 1 sekundę
	}
}

CollectTitanium3Edytuj

Ponieważ w tej misji potrzebne będzie mnóstwo tytanu, po raz kolejny usprawniliśmy program CollectTitanium. Gromadzi on całą serię kostek tytanu na wolnej powierzchni, więc możesz mu już pozwolić pracować zupełnie samodzielnie. Ładuje on również swoje ogniwo elektryczne w stacji energetycznej jeśli jest to konieczne.

extern void object::CollectTitanium3()
{
	// 1) Deklaracje zmiennych.
	object  item;            // informacja o obiekcie
	
	while (true)             // informacja o obiekcie
	{
		
		// 2) Idź do rudy tytanu i podnieś ją
		item = radar(TitaniumOre);// znajdź rudę tytanu
		goto(item.position);     // idź do pozycji
		grab();                  // podnieś porcję rudy
		
		// 3) Idź do huty i zostaw rudę
		item = radar(Converter); // znajdź hutę
		goto(item.position);     // idź do pozycji
		drop();                  // zostaw rudę
		move(-2.5);              // cofnij się o 2,5 m
		
		// 4) Poczekaj na przetopienie rudy i zabierz tytan
		do
		{
			wait(1);              // poczekaj na kostkę tytanu
			item = radar(Titanium, 0, 45, 0, 5);
		}
		while ( item == null );
		goto(item.position);
		grab();                   // weź ją
		
		// 5) Idź do wolnego miejsca i zostaw ją
		goto(space(position));    // idź do wolnego miejsca
		drop();                   // zostaw tytan
		
		// 6) Naładuj ogniwo elektryczne, jeśli jest w połowie zużyte
		if ( energyCell.energyLevel < 0.5 )
		{                         // jeśli tak:
			item = radar(PowerStation);
			if ( item != null )   // czy znaleziono stację 
			{
				goto(item.position); // idź tam
				while ( energyCell.energyLevel < 1 )
				{                 // do czasu naładowania:
					wait(1);      // czekaj
				}
			}
		}
	}
}

ServiceTower1Edytuj

Napisaliśmy program zajmujący się ładowaniem ogniwa elektrycznego wieży obronnej:

1) Idź do wieży obronnej. 2) Poczekaj aż ogniwo elektryczne będzie w 80% puste. 3) Zabierz ogniwo elektryczne i doładuj je w stacji energetycznej. 4) Odnieś je do wieży obronnej.

W celu zredukowania czasu gdy wieża pozostaje bez zasilania, zbuduj stację energetyczną możliwie najbliżej wieży. Przydatną sztuczką jest zostawienie ogniwa elektrycznego na ziemi przed wieżą. Osy będą atakowały ogniwo i jeśli pierwszy strzał będzie niecelny lub osa przybędzie gdy wieża będzie bez zasilania, zniszczone zostanie tylko ogniw, a nie wieża obronna.

extern void object::ServiceTower1()
{
	object  tower;               // informacje o wieży
	object  station;             // informacje o stacji
	
	// 1) idź do wieży obronnej
	tower = radar(DefenseTower); // znajdź wieżę
	goto(tower.position);        // i idź tam
	
	while ( true )               // powtarzaj w nieskończoność
	{
		// 2) poczekaj na wyczerpanie ogniwa elektrycznego
		while ( tower.energyCell.energyLevel > 0.2 )
		{
			wait(2);
		}
		grab();                  // weź ogniwo elektryczne
		
		// 3) idź do elektrowni i naładuj je
		station = radar(PowerStation);
		goto(station.position);  // idź tam
		while ( load.energyLevel < 1 )
		{
			wait(1);             // poczekaj aż się naładuje
		}
		
		// 4) wróć do wieży obronnej
		goto(tower.position);    // idź do wieży
		drop();                  // zostaw ogniwo elektryczne
	}
}

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

Więcej z Fandomu

Losowa wiki