Untitled

mail@pastecode.io avatar
unknown
python
2 years ago
5.3 kB
0
Indexable
Never
# 1. Funkcja do wybudowania platformy i schodków na góre
# 2. Funkcja i system checkpointów w grze
# 3. Funkcja budująca etap 1 i 2

def parkour():
    # 1.1 Teleportacja konstruktor do gracza
    builder.teleport_to(pos(5,0,0))
    # 1.2 Obrot konstruktora
    builder.face(EAST)
    # 1.3 Petla for do budownia schodow
    for i in range(30):
        # 1.4 W SRODKU PETLI klade schodek builder.place()
        builder.place(PURPUR_STAIRS)
        # 1.5 W SRODKU PETLI przesuwam konstruktor
        builder.shift(1,1,0)
    # 1.6 Zaznaczam pozycje konstruktora
    builder.mark()
    # 1.7 Przesuwam konstruktor
    builder.shift(2,0,-4)
    # 1.8 Wypelnij zaznaczona przestrzen bloczkami
    builder.fill(DIAMOND_BLOCK)
# 1.9 POZA FUNKCJA Przypisanie funkcji parkour do czatu
player.on_chat("start", parkour)

# CHECKPOINT
# zmienna przechowujaca aktualna pozycje gracza aktualnaPozycjaGracza = player.position()
aktualnaPozycjaGracza = player.position()
# zmienna sprawdzajaca kolejny etap => czyEtap1 = False
czyEtap1 = False
czyEtap2 = False
czyEtap3 = False

# Funkcja Smierc ktora teleportuje gracza do poprzedniej zapisanej aktualnaPozycjaGracza
def smierc():
    player.teleport(aktualnaPozycjaGracza)
# Przypisanie funkcji Smierc do zdarzenia smierci gracza
player.on_died(smierc)

# Funkcja budująca etap 1 i 2 def etap1i2(obrotKonstruktora, rodzajToru, rodzajCheckpoint):
def etap1i2(obrotKonstruktora, rodzajToru, rodzajCheckpoint):
    # Teleport konstruktora pod platforme
    builder.teleport_to(pos(1, -4, 0))
    # Zaznacz pozycje konsturktorem
    builder.mark()
    # Obroc konstruktor na Wschod
    builder.face(EAST)
    # Petla dla 1 etapu
    for i in range(2):
        # Petla dla platform w etapie
        for i in range(5):
            # Przesuwamy konstruktor o losowa wartosc
            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 odniej budowała się kolejna linia
            builder.mark()
        # obrót konstruktora na koniec 1 etapu
        builder.turn(obrotKonstruktora)
    # tworzymy nową platformę
    builder.mark()
    builder.shift(2, 0, -4)
    builder.fill(rodzajCheckpoint)

# Petla zawsze while True:
while True:
    # Sprawdzam czy gracz jest na platformie i moze zaczac budowayc etap1i2 if blocks.test_for_block(DIAMOND_BLOCK, pos(0,-1,0)) and not czyEtap1:
    if blocks.test_for_block(DIAMOND_BLOCK, pos(0,-1,0)) and not czyEtap1:
        # Aktualizuje pozycje gracza do checkpointu aktualnaPozycjaGracza = player.position()
        aktualnaPozycjaGracza = player.position()
        # Wylaczam budowanie etapu 1 czyEtap1 = True
        czyEtap1 = True
        # Buduje etap 1 -> etap1i2(RIGHT_TURN, SLIME_BLOCK, GOLD_BLOCK)
        etap1i2(TurnDirection.RIGHT, SLIME_BLOCK, GOLD_BLOCK)
    elif blocks.test_for_block(GOLD_BLOCK, pos(0, -1, 0)) and not czyEtap2:
        # Aktualizuje pozycje gracza do checkpointu aktualnaPozycjaGracza = player.position()
        aktualnaPozycjaGracza = player.position()
        # Wylaczam budowanie etapu 1 czyEtap1 = True
        czyEtap2 = False
        # Buduje etap2 
        etap1i2(TurnDirection.LEFT, MAGENTA_STAINED_GLASS, BEDROCK)
    # Sprawdzam czy gracz nie jest na BEDROCK i czyEtap3 to false -> blocks.test_for_block(BEDROCK, pos(0, -1, 0)) and not czyEtap3:
    elif blocks.test_for_block(BEDROCK, pos(0, -1, 0)) and not czyEtap3:
        # TAB Aktualizuje pozycje gracza do checkpointu aktualnaPozycjaGracza = player.position()
        aktualnaPozycjaGracza = player.position()
        # TAB Wylaczam budowanie etapu 3 -> czyEtap3 = False
        czyEtap3 = False
        # TAB Buduje etap3 -> etap3()
        etap3()

# Funkcja budująca etap 3
def etap3():
    # Buduje kule ze szlamu jako przeszkode -> shapes.sphere(SLIME_BLOCK, pos(4, -30, 0), 1, ShapeOperation.REPLACE)
    shapes.sphere(SLIME_BLOCK, pos(4, -30, 0), 1, ShapeOperation.REPLACE)
    # Teleportuje konstrukor za kule -> builder.teleport_to(pos(6, -32, 0))
    builder.teleport_to(pos(6, -32, 0))
    # Zaznaczam pozycje builder.mark()
    builder.mark()
    # Obrot konstruktora na Wschod -> builder.face(EAST)
    builder.face(EAST)
    # Zaznaczam pozycje startowa -> do ktorej wroce builder.set_origin()
    builder.set_origin()
    # Przesuwam konstrukor o 65 bloczkow do przodu -> builder.move(FORWARD, 65)
    builder.move(FORWARD, 65)
    # Kłade bloczki netheru -> builder.line(NETHERRACK)
    builder.line(NETHERRACK)
    # Wracam na poczatek -> builder.teleport_to_origin()
    builder.teleport_to_origin()
    # Podnosze konstrukor -> builder.move(UP, 1)
    builder.move(UP, 1)
    # Petla dla ognia jako przeszkody -> for i in range(11):
    for i in range(11):
        # TAB losuje warotsc -> builder.move(FORWARD, randint(3, 8))
        builder.move(FORWARD, randint(3, 8))
        # TAB Położ ogień -> builder.place(FIRE)
        builder.place(FIRE)
    # ZBUDUJ PLATFORME 
    # 1. Zaznacz -> builder.mark()
    builder.mark()
    # 2. Przesuń -> builder.shift(2,0,-4)
    builder.shift(2,0,-4)
    # 3. Zbuduj platforme -> builder.fill(MOSS_STONE)
    builder.fill(MOSS_STONE)