Untitled

mail@pastecode.io avatar
unknown
python
2 years ago
3.8 kB
5
Indexable
Never
#aktualne miejsce odrodzenia gracza, zmienne w zależności od checkpointu, który zaliczymy
aktualnaPozycjaOdrodzenia = player.position()


#zmienna pomocnicza dzięki niej dany etap będzie tworzony raz w ramach jednej rozgrywki
czyEtap1 = False
czyEtap2 = False
czyEtap3 = False

#budujemy schody oraz pierwszą platformę ładującą etap 1

def nowyParkour():
    
    #teleportujemy konstruktor w okolice gracza
    builder.teleport_to(pos(5, 0, 0))
    #obrót
    builder.face(EAST)

    for i in range(70):
        #konstruktor umieszcza blok schodów
        builder.place(PURPUR_STAIRS)
        builder.shift(1,1,0)

    builder.mark()
    builder.shift(2, 0, -4)
    #konstruktor wypełnia przestrzeń blokami od znaku(mark) do obecnej pozycji
    builder.fill(DIAMOND_BLOCK)

player.on_chat("start", nowyParkour)


def smierc():
    player.teleport(aktualnaPozycjaOdrodzenia)

player.on_died(smierc)

#pętla sterująca ładowaniem etapów oraz system checkpoint

while True:
    if blocks.test_for_block(DIAMOND_BLOCK, pos(0, -1, 0)) and not czyEtap1:
        aktualnaPozycjaOdrodzenia = player.position()
        czyEtap1 = True
        etap1(RIGHT_TURN,SLIME_BLOCK,GOLD_BLOCK)

    elif blocks.test_for_block(GOLD_BLOCK, pos(0, -1, 0)) and not czyEtap2:
        aktualnaPozycjaOdrodzenia = player.position()
        czyEtap2 = True
        etap2()
    elif blocks.test_for_block(MOSS_STONE, pos(0, -1, 0)) and not czyEtap3:
        aktualnaPozycjaOdrodzenia = player.position()
        czyEtap3 = True
        etap3()


def etap1(obrotKonstruktora,rodzajToru,rodzajCheckpointu):
    #teleport konstruktora pod platformę i przesunięcie
    builder.teleport_to(pos(1, -4, 0))
    builder.mark()
    builder.face(EAST)

    for i in range(2):
        for j in range(5):
            #Przesuwamy konstruktor
            builder.move(FORWARD, randint(3, 8))
            #Tworzymy linie z danego bloku
            builder.line(rodzajToru)
            #przesuwamy konstruktor w celu zrobienia przerwy pomiędzy blokami
            builder.move(FORWARD, randint(2, 4))
            #oznaczamy aktualną pozycję żeby to od niej budowała się kolejna linia
            builder.mark()
            #obrót konstruktora
        builder.turn(obrotKonstruktora)

            #tworzymy nową platformę
    builder.mark()
    builder.shift(2, 0, -4)
    builder.fill(rodzajCheckpointu)

def etap2():
    #tworzymy kule ze szlamu
    shapes.sphere(SLIME_BLOCK, pos(4, -30, 0), 1, ShapeOperation.REPLACE)

    builder.teleport_to(pos(6,-32,0))
    builder.mark()
    builder.face(EAST)

    #ustawiamy pozycję pierwotną później wrócimy w to miejsce konstruktorem i będziemy dodawać ogień

    builder.set_origin()
    builder.move(FORWARD, 65)
    builder.line(NETHERRACK)

    #wracamy aby dodać ogień

    builder.teleport_to_origin()
    builder.move(UP, 1)
    for i in range(11):
        builder.move(FORWARD, randint(3,8))
        builder.place(FIRE)

    #budujemy platforme

    builder.mark()
    builder.shift(2, 0, -4)
    builder.fill(MOSS_STONE)

def etap3():
    #projektujemy skok wiary
    builder.move(DOWN, 30)
    builder.face(SOUTH)
    builder.move(FORWARD, 6)

    #budujemy studnię z wodą
    builder.mark()
    builder.shift(2, 2, 2)
    builder.fill(BRICKS)
    builder.shift(-1, 0, -1)
    builder.place(WATER)
    builder.move(FORWARD, 4)
    builder.set_origin()
    #pętla tworząca schody spiralne kończy swoje działanie kiedy gracz stanie na ostatniej platformie
    for i in range(30):
        builder.place(POLISHED_GRANITE)
        builder.move(FORWARD,1)
        builder.move(UP, 1)
        builder.turn(RIGHT_TURN)