Agent

 avatar
unknown
python
a year ago
2.9 kB
8
Indexable
#po pierwszym uruchomieniu agent teleportowany jest do gracza i to od niego zaczyna budowanie kolejki
agent.teleport_to_player()
 
'''
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, rodzajTorów):
    #zmienna przechowująca aktualną ilość wybudowanych torów, wywołując funkcję sami decydujemy ile agent ma wybudować torów
    aktualnaLiczbaTorow = 0
    #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    
    # Wschód = EAST 3
    elif kierunek == 3 :
        aktualnyKierunekAgenta =  CompassDirection.EAST
    # Północ = NORTH 4
    elif kierunek == 4 :
        aktualnyKierunekAgenta =  CompassDirection.NORTH


    #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 redstone 
        if rodzajTorów == 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) # 3 i 4
        #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 rodzajTorów == 1:
                agent.set_slot(3)
            else:
                agent.set_slot(4)
            agent.place(DOWN)
        else:
            # jeśli nie ma żadnych przeszkód ustawiamy slot na tory, agent idzie do przodu
            if rodzajTorów == 1:
                agent.set_slot(1)
            else:
                agent.set_slot(2)
            agent.move(FORWARD, 1)
 
            aktualnaLiczbaTorow += 1
 
    player.say("budowa zakończona")
player.on_chat("b",budowanieKolejki)
 
Editor is loading...
Leave a Comment