Untitled

mail@pastecode.io avatar
unknown
plain_text
7 months ago
2.5 kB
3
Indexable
Never
# aktualne miejsce odrodzenia gracza, zmienne w zależności od checkpo
# intu, 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
#budujemy schody oraz pierwszą platformę ładującą etap 1
def nowyParkour():
    #teleportujemy konstruktor w okolice gracza
    builder.teleport_to(pos(5,0,0))
    # obacamy
    builder.face(EAST)

    for i in range(70):
        builder.place(PURPUR_STAIRS)

        builder.shift(1, 1, 0)

    #oznaczamy bieżącą pozycję konstruktora
    builder.mark()
    builder.shift(2,0,-4)

    #konstruktor wypełnia przestrzeń blokami od znaku(mark) do obecn
    #ej pozycji
    builder.fill(DIAMOND_BLOCK)

player.on_chat('start',nowyParkour)

def etap1i2(obrotKonstruktora,rodzajToru,rodzajCheckpoint):
    #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,3))
            #oznaczamy aktualną pozycję 
            #żeby to od niej budowała się kolejna linia
            builder.mark()

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



def smierc():
    #dodajemy przerwę żeby poprawnie działało odradzanie gracza na
    #platformie checkpoint:
    # przerwa 500,  aktualnaPozycjaOdrodzenia
    loops.pause(500)
    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:
        #aktualizujemy pozycje gracza
        aktualnaPozycjaOdrodzenia = player.position()
        czyEtap1 = True
        etap1i2(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
        etap1i2(LEFT_TURN,MAGENTA_STAINED_GLASS_PANE,BEDROCK)


    
Leave a Comment