Untitled

mail@pastecode.io avatar
unknown
python
2 years ago
3.9 kB
0
Indexable
Never
# po uruchomieniu programu pobieramy współrzędne gracza które
#będą wykorzystane w całym projekcie, będziemy jedynie aktualizować współrzędną "z" gracza żeby odpowiednio dobudowywać etapy
pozycja=player.position()
x=pozycja.get_value(Axis.X)
y=pozycja.get_value(Axis.Y)
z=pozycja.get_value(Axis.Z) 

#funkcja ta przygotowuje pierwszy segment toru
def tor():
    
    #Tworzymy bryłę toru ze skały macierzystej
    blocks.fill(BEDROCK, world(x-10,y-1,z-2),world(x+10,y+10,z+35),FillOperation.HOLLOW)
    #pierwsza linia uruchamiająca etap 1
    blocks.fill(SEA_LANTERN, world(x-9,y-1,z+3),world(x+9,y-1,z+5))
    #gameplay.set_game_mode(SURVIVAL, mobs.target(NEAREST_PLAYER))
    
player.on_chat("start", tor)

def poZniszczeniu():
    
    player.teleport(pos(0, 0, 10))
    
blocks.on_block_broken(GLOWSTONE, poZniszczeniu)


def etap1(z):
    player.say("ETAP 1")
    
    #czyścimy poziomą linię bloków żeby uchronić gracza przed ponownym załadowaniem levelu
    blocks.fill(BEDROCK, world(x-10,y-1,z-5),world(x+10,y-1,z+5))
    #dodajemy przegrodę za graczem
    blocks.fill(BEDROCK, world(x-10,y,z-3),world(x+10,y+10,z-1))
    #linia ładująca kolejny etap
    blocks.fill(GOLD_BLOCK, world(x-9,y-1,z+25),world(x+9,y-1,z+27))
    #przeszkody etapu 1
    blocks.fill(IRON_BARS, world(x-9,y-1,z+3),world(x+9,y-1,z+20))
    blocks.fill(LAVA, world(x-9,y-2,z+3),world(x+9,y-2,z+20))
    

    while True:
        if blocks.test_for_block(IRON_BARS, pos(0, -1, 0)):

            mobs.give(mobs.target(NEAREST_PLAYER), DIAMOND_AXE, 1)
            for i in range(6):
                
                mobs.spawn(CREEPER, randpos(world(x-8,y+1,z+3), world(x+8,y+1,z+20)))
#break kończy pętlę, która ją zawiera. 
#sterowanie programem przechodzi do instrukcji bezpośrednio po treści pętli.
            break


def etap2(z):
    player.say("ETAP 2")
    #dodajemy kolejny segment toru
    blocks.fill(BEDROCK, world(x-10,y-1,z-2),world(x+10,y+10,z+30),FillOperation.HOLLOW)
    blocks.fill(BEDROCK, world(x-10,y-1,z-5),world(x+10,y-1,z+5))
    blocks.fill(BEDROCK, world(x-10,y,z-3),world(x+10,y+10,z-1))
    blocks.fill(GLASS, world(x-9,y-1,z+25),world(x+9,y-1,z+27))
    
    for i in range(11):
        
        mobs.spawn(ZOMBIE, randpos(world(x-8,y+3,z+3), world(x+8,y+3,z+20)))

#kod odpowiedzialny za ładowanie poszczególnych etapów
while True:
    #sprawdzamy blok pod graczem 
    if blocks.test_for_block(SEA_LANTERN, pos(0, -1, 0)):
        #pobieramy aktualną pozycję z i przekazujemy do funkcji
        pozycja=player.position()
        z=pozycja.get_value(Axis.Z)
        etap1(z)
        loops.pause(3000)
    elif blocks.test_for_block(GOLD_BLOCK, pos(0, -1, 0)):
        pozycja=player.position()
        z=pozycja.get_value(Axis.Z)
        etap2(z)
        loops.pause(3000)
    elif blocks.test_for_block(GLASS, pos(0, -1, 0)):
        pozycja=player.position()
        z=pozycja.get_value(Axis.Z)
        etap3(z)
        loops.pause(3000)
        
def etap3(z):
    #dodajemy kolejny segment toru
    blocks.fill(BEDROCK, world(x-10,y-1,z-2), world(x+10,y+10,z+30), FillOperation.HOLLOW)
    blocks.fill(BEDROCK, world(x-10,y-1,z-3), world(x+10, y-1, z+3)) # zamienia blok pod graczem
    blocks.fill(BEDROCK, world(x-10,y-1,z-3), world(x+10, y+10, z-5)) # buduje sciane za graczem
    blocks.fill(DIAMOND_BLOCK, world(x-10, y-1, z+5), world(x+10, y-1, z+20))# 1. DOBUDOWAC TOR Z DIAMENTOW 
    blocks.fill(COBBLESTONE, world(x-10,y-1, z+23), world(x+10, y-1, z+27)) # Coblestone
    # 2. W PETLI ZAWSZE 
    while True: 
        # 2.1 sprawdzic czy gracz stoi na diamentach 
        if blocks.test_for_block(DIAMOND_BLOCK, pos(0, -1, 0)):
            # 2.2 Jesli stoi na diamentach(prawda) to spawn tnt -> 
            for i in range(20):
                mobs.spawn(TNT,randpos(world(x-8,y+3,z+3), world(x+8,y+3,z+20)))
            break