# STEROWANIE AGENTEM def lewo(): agent.turn(TurnDirection.LEFT) def prawo(): agent.turn(TurnDirection.RIGHT) def tyl(): agent.turn(TurnDirection.LEFT) agent.turn(TurnDirection.LEFT) def instrukcja(): player.say("Wywołaj funkcję budowy: b") player.say("Podaj liczbę torów") player.say("Podaj wysokość: -1 = dół, 1 = góra, inne = bez zmian") player.say("Podaj rodzaj torów: 1 = zwykłe, 2 = zasilane") player.say("np. b 3 -1 2") def teleport(): agent.teleport_to_player() player.on_chat("a",lewo) player.on_chat("d",prawo) player.on_chat("s",tyl) player.on_chat("info",instrukcja) player.on_chat("tp",teleport) def bloki(): #dajemy agentowi blok torów w liczbie 64 w slocie 1 agent.set_item(RAIL, 64, 1) agent.set_item(POWERED_RAIL, 64, 2) agent.set_item(STONE, 64, 3) agent.set_item(REDSTONE_BLOCK, 64, 4) def kolejka(liczba_torow): #zmienna przechowująca aktualną ilość wybudowanych torów, wywołując funkcję sami decydujemy ile agent ma wybudować torów licznik_torow = 0 #funkcja, która uzupełnia sloty agenta odpowiednimi blokami tak aby mógł budować bloki() #podczas przemieszczania się agent umieszcza blok ze wskazanego slotu agent.set_assist(PLACE_ON_MOVE, True) #podczas przemieszczania się agent niszczy bloki które stają na jego drodze agent.set_assist(DESTROY_OBSTACLES, True) # pętla działa do momentu wybudowania liczby torów którą gracz wskazał podczas wywołania funkcji while licznik_torow < liczba_torow: #czyszczenie trasy nad torem if agent.detect(AgentDetection.BLOCK, UP): agent.destroy(UP) #jeśli agent wykryje że jest w powietrzu, nad wodą lub nad lavą i nie ma na czym budować to umieszcza blok stone elif agent.inspect(AgentInspection.BLOCK, DOWN) == AIR or agent.inspect(AgentInspection.BLOCK, DOWN) == WATER or agent.inspect(AgentInspection.BLOCK, DOWN) == LAVA: agent.set_slot(3) agent.place(DOWN) else: agent.set_slot(1) agent.move(FORWARD, 1) licznik_torow += 1 player.say("budowa zakończona") player.on_chat("b",kolejka)