Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #po pierwszym uruchomieniu agent teleportowany jest do gracza i to od niego zaczyna budowanie kolejki
- agent.teleport_to_player()
- #zmienna ta będzie nadpisywana z funkcji dzięki temu budując w górę lub w dół zachowamy ostatni kierunek
- ostatniKierunek=CompassDirection.SOUTH
- '''
- Założenia projektowe:
- slot 1 - tory
- slot 2 - zasilane tory
- slot 3 - stone
- slot 4 - redstone
- '''
- def uzupelnijBloki():
- #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 budowanieKolejki(iloscTorow,kierunek,rodzajTorow):
- #zmienna przechowująca aktualną ilość wybudowanych torów, wywołując funkcję sami decydujemy ile agent ma wybudować torów
- aktualnaLiczbaTorow = 0
- #tworzymy globalną zmienną, w której będzie zapisany ostatni kierunek jaki posiadał agent
- global ostatniKierunek
- #funkcja, która uzupełnia sloty agenta odpowiednimi blokami tak aby mógł budować
- uzupelnijBloki()
- if kierunek==1 :
- aktualnyKierunekAgenta=CompassDirection.SOUTH
- elif kierunek==2:
- aktualnyKierunekAgenta=CompassDirection.WEST
- elif kierunek==3:
- aktualnyKierunekAgenta=CompassDirection.EAST
- elif kierunek==4:
- aktualnyKierunekAgenta=CompassDirection.NORTH
- #kierunek 5-dół, kierunek 6-góra
- else:
- aktualnyKierunekAgenta=ostatniKierunek
- #teleportujemy agenta, tak naprawdę zależy nam tutaj na jego kierunku, który z czasem będziemy modyfikować
- agent.teleport(agent.get_position(),aktualnyKierunekAgenta)
- #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 aktualnaLiczbaTorow < iloscTorow:
- # czyszczenie trasy pod torem aby móc postawić tam bloki redstone do zasilanych torów
- if rodzajTorow == 2 and agent.inspect(AgentInspection.BLOCK, DOWN) != REDSTONE_BLOCK:
- agent.destroy(DOWN)
- #czyszczenie trasy nad torem
- if agent.detect(AgentDetection.BLOCK, UP):
- agent.destroy(UP)
- #jeśli agent wykryje że jest w powietrzu lub w wodzie i nie ma na czym budować to umieszcza blok stone
- elif agent.inspect(AgentInspection.BLOCK, DOWN) == 0 or agent.inspect(AgentInspection.BLOCK, DOWN) == 9:
- if rodzajTorow==1:
- agent.set_slot(3)
- else:
- agent.set_slot(4)
- agent.place(DOWN)
- else:
- if rodzajTorow==1:
- agent.set_slot(1)
- else:
- agent.set_slot(2)
- #budowanie kolejki w dół
- if kierunek==5:
- agent.move(FORWARD, 1)
- agent.destroy(UP)
- agent.set_assist(PLACE_ON_MOVE, False)
- agent.move(DOWN, 1)
- agent.set_assist(PLACE_ON_MOVE, True)
- aktualnaLiczbaTorow += 1
- #budowanie kolejki w górę
- elif kierunek==6:
- agent.move(FORWARD,1)
- agent.destroy(UP)
- agent.set_assist(PLACE_ON_MOVE, False)
- agent.move(UP,2)
- agent.destroy(UP)
- agent.move(DOWN,1)
- agent.set_assist(PLACE_ON_MOVE, True)
- aktualnaLiczbaTorow += 1
- else:
- #agent idzie do przodu
- agent.move(FORWARD, 1)
- aktualnaLiczbaTorow += 1
- ostatniKierunek=aktualnyKierunekAgenta
- player.say("budowa zakończona")
- player.on_chat("b",budowanieKolejki)
Add Comment
Please, Sign In to add comment