Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Założenia projektowe
- # 1) Numery slotów u agenta
- SLOT_AGENTA_TORY = 1
- SLOT_AGENTA_ZASILANE_TORY = 2
- SLOT_AGENTA_STONE = 3
- SLOT_AGENTA_REDSTONE = 4
- # 2) Numery kierunków w projekcie
- NR_KIERUNKU_SOUTH = 1
- NR_KIERUNKU_WEST = 2
- NR_KIERUNKU_EAST = 3
- NR_KIERUNKU_NORTH = 4
- # teleportuj agenta do obecnego miejsca gracza
- def teleportAgentaDoGracza():
- agent.teleport(player.position(), SOUTH)
- pass # Koniec funkcji teleportAgentaDoGracza
- # wybuduj podstawę pod graczem, która wskaże kierunki
- def pokazKierunki():
- # Wykorzystamy konstruktor
- builder.push_state() # Zapisz konstruktor
- builder.teleport_to(player.position()) # Teleport do gracza
- builder.move(DOWN, 1)
- builder.set_origin() # Ustawienie miejsca do teleportu
- # Południe
- player.say(str(NR_KIERUNKU_SOUTH) + " - SOUTH - Południe - DIAMOND_BLOCK")
- builder.face(SOUTH)
- builder.move(FORWARD, 1)
- builder.place(DIAMOND_BLOCK)
- builder.teleport_to_origin()
- # Zachód
- player.say(str(NR_KIERUNKU_WEST) + " - WEST - Zachód - GOLD_BLOCK")
- builder.face(WEST)
- builder.move(FORWARD, 1)
- builder.place(GOLD_BLOCK)
- builder.teleport_to_origin()
- # Wschód
- player.say(str(NR_KIERUNKU_EAST) + " - EAST - Wschód - STONE")
- builder.face(EAST)
- builder.move(FORWARD, 1)
- builder.place(STONE)
- builder.teleport_to_origin()
- # Północ
- player.say(str(NR_KIERUNKU_NORTH) + " - NORTH - Północ - GLASS")
- builder.face(NORTH)
- builder.move(FORWARD, 1)
- builder.place(GLASS)
- builder.teleport_to_origin()
- builder.pop_state() # Przywróć konstruktor
- pass # Koniec funkcji pokazKierunki
- def uzupelnijBloki():
- # agent.set_item(BLOK, ILOSC, NR_SLOTU)
- agent.set_item(RAIL, 64, SLOT_AGENTA_TORY)
- agent.set_item(POWERED_RAIL, 64, SLOT_AGENTA_ZASILANE_TORY)
- agent.set_item(STONE, 64, SLOT_AGENTA_STONE)
- agent.set_item(REDSTONE_BLOCK, 64, SLOT_AGENTA_REDSTONE)
- pass # Koniec funkcji uzupelnijBloki
- def budowanieKolejki(iloscTorow):
- # Zmienna, która zlicza ile torów już postawiliśmy
- aktualnaLiczbaTorow = 0
- # Wywołanie funkcji uzupelnijBloki - patrz wyżej
- uzupelnijBloki()
- # Teleport agenta - jednak tak na prawdę zmienia się TYLKO jego kierunek
- # Zwróć uwagę, że teleportujemy go do jego obecnej pozycji - czyli nic się nie zmienia
- agent.teleport(agent.get_position(), SOUTH)
- # Ustawienie agenta - każdy ruch powoduje postawienie bloku
- agent.set_assist(PLACE_ON_MOVE, True)
- # Jeśli jakiś blok będzie przeszkodą - zniszcz ten blok
- agent.set_assist(DESTROY_OBSTACLES, True)
- # Póki postawiliśmy mniej boków niż trzeba powtarzamy kod w środku pętli
- while aktualnaLiczbaTorow < iloscTorow:
- # Sprawdź czy trzeba usunąć jakiś blok
- if agent.detect(AgentDetection.BLOCK, UP) or agent.detect(AgentDetection.BLOCK, FORWARD):
- agent.destroy(UP)
- agent.destroy(FORWARD)
- pass # Koniec if
- # Sprawdź, czy trzeba dodać podstawę pod tory
- elif agent.inspect(AgentInspection.BLOCK, DOWN) == 0 or agent.inspect(AgentInspection.BLOCK, DOWN) == 9:
- agent.set_slot(SLOT_AGENTA_STONE)
- agent.place(DOWN)
- pass # Koniec elif
- else:
- # Jeśli nie trzeba było nic wyburzać, ani nic budować to znaczy,
- # że możemy wybudować tory
- agent.set_slot(SLOT_AGENTA_TORY)
- agent.move(FORWARD, 1)
- aktualnaLiczbaTorow += 1
- pass # Koniec instrukcji warunkowej
- pass # Koniec pętli while
- player.say("Budowa zakończona. Wybudowano " + str(iloscTorow) + " torów")
- pass # Koniec funkcji budowanieKolejki
- # Powiązanie słow/komend z funkcjami
- player.on_chat("b", budowanieKolejki)
- player.on_chat("tutaj", teleportAgentaDoGracza)
- player.on_chat("kierunki", pokazKierunki)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement