Untitled

mail@pastecode.io avatar
unknown
python
2 years ago
3.0 kB
6
Indexable
Never

# PARKOUR
# 1. start i platforma
# 2. checkpoint -> jak umrzesz w grze / przegrasz --> odradzasz sie w poprzenim punktcie
# 3. zmienne potrzebne do ładowania etapów
# 4. funkcja na odradzanie sie w checkpoint

czyEtap1 = False # zmienna ładujaca etap 1 / zmieni sie kiedy osiagagne checkpoint

# system odrodzania i checkpointów
# checkpoint -> jak umrzesz w grze / przegrasz --> odradzasz sie w poprzenim punktcie
pozycjaOdrodzenia = player.position() # aktualna pozycja odrodzenia

# funkcja budujaca nowa platforme i schody do 1 etapu
def platforma():
    # 1. Teleportuje konstruktor
    builder.teleport_to(pos(5, 0, 0))
    # 2. Obracam w strone EAST
    builder.face(EAST)
    # 3. Buduje schody uzywajac petli for
    for i in range(70):
        # 4. Umieszczam bloczek jako schodek
        builder.place(PURPUR_STAIRS)
        # 5. Poruszam konstruktor do przodu i w gore
        builder.shift(1, 1, 0)
    # 6. Oznaczam teren na checkpoint
    builder.mark()
    builder.shift(2, 0, -4)
    # 7. Buduje checkpoint z DIAMOND_BLOCK
    builder.fill(DIAMOND_BLOCK)
# 8. Przypisuje funkcje do czatu
player.on_chat("start",platforma)

# Checkpoint i odradzanie
# 1. Funkcja przypisana do zdarzenia na smierc gracza
def smierc():
    # 1.1 Pauza 500ms
    loops.pause(500)
    # 1.2 Teleportacja gracza do pozycjaOdrodzenia
    player.teleport(pozycjaOdrodzenia)
# 2. Przypisanie funkcji do zdarzenia smierci
player.on_died(smierc)

# Uruchomienie gry i checkpointów
# 1. Petla zawsze w czasie gry
while True:
    # 2. Sprawdzam czy gracz wszedl na platforme i czyEtap1 jest false -> oznacza to że etap 1 nie był ładowany wcześniej
    if blocks.test_for_block(DIAMOND_BLOCK, pos(0, -1, 0)) and not czyEtap1:
        # 3. Aktualizacja pozycjaOdrodzenia
        pozycjaOdrodzenia = player.position()
        # 4. Zablokowanie ładowania etapu1 po raz kolejny
        czyEtap1 = True
        # 5. ładowanie etap1()
        etap1i2(TurnDirection.RIGHT, SLIME_BLOCK, GOLD_BLOCK)

        
# Funkcja budujaca etap 1 i 2 z parametrami obrotKonstruktora, rodzajToru, rodzajCheckpointu
def etap1i2(obrotKonstruktora, rodzajToru, rodzajCheckpointu):
    # 1. Przesuniecie konstruktora pod checkpoint i zaznaczenie pozycji
    builder.teleport_to(pos(1, -4, 0))
    builder.mark()
    builder.face(EAST)
    # 2. Petla for dla 2 etapów toru
    for i in range(2):
        # 3. Petla for dla bloczkow etapu
        for i in range(5):
            # 4. Przesuwam konstruktor o losowe wartosci -> randint(3, 8)
            builder.move(FORWARD, randint(3, 8))
            # 5. Buduje platforme parkour
            builder.line(rodzajToru)
            # 6. Robie odstep parkur o losowa wartosc -> randint(2, 3)
            builder.move(FORWARD, randint(2, 3))
            # 7. Zaznaczam pozycje do kolejnej lini
            builder.mark()
        builder.turn(TurnDirection.RIGHT)
    # 8. Tworze nowa platforme
    builder.mark()
    builder.shift(2, 0, -4)
    builder.fill(rodzajCheckpointu)