# 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łe 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)
#kod do ładowania poszczegolnych etapow
while True:
#sprawdza na jakim bloku stoimy
if blocks.test_for_block(SEA_LANTERN, pos(0, -1, 0)):
#pobieramy aktualna pozycje gracza i wysylamy 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)
elif blocks.test_for_block(COBBLESTONE, pos(0, -1, 0)):
pozycja=player.position()
z=pozycja.get_value(Axis.Z)
etap4(z)
loops.pause(3000)
elif blocks.test_for_block(GLOWSTONE, pos(0, -1, 0)):
koniec()
loops.pause(3000)
def etap1(z):
player.say("ETAP 1!")
#chronimy gracza przed nowy lvl
blocks.fill(BEDROCK, world(x-10,y-1,z-5),world(x+10,y-1,z+5))
#dodajemy przegrode 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 dla 1 etapu
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))
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)))
def etap3(z):
player.say("ETAP 3")
#dodajemy jednolity segment
blocks.fill(BEDROCK, world(x-10,y-1,z-2),world(x+10,y+10,z+30),FillOperation.HOLLOW)
#czyścimy poziome linie
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))
#dodajemy pod koniec linię, która uruchomi kolejny etap
blocks.fill(COBBLESTONE, world(x-9,y-1,z+25),world(x+9,y-1,z+27))
#przeszkody etapu 3
blocks.fill(DIAMOND_BLOCK, world(x-9,y-1,z+3),world(x+9,y-1,z+20))
while True:
if blocks.test_for_block(DIAMOND_BLOCK, pos(0, -1, 0)):
for i in range(11):
mobs.spawn(PRIMED_TNT, randpos(world(x-8,y+3,z+3), world(x+8,y+3,z+20)))
break
def etap4(z):
player.say("ETAP 4")
#dodajemy jednolity segment
blocks.fill(BEDROCK, world(x-10,y-1,z-2),world(x+10,y+10,z+30),FillOperation.HOLLOW)
#czyścimy poziome linie
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))
#dodajemy pod koniec linię, która uruchomi kolejny etap
blocks.fill(GLOWSTONE, world(x-9,y-1,z+25),world(x+9,y-1,z+27))
while True:
if blocks.test_for_block(BEDROCK,pos(0,-1,0)):
for i in range(15):
blocks.place(STONE_BRICKS, randpos(world(x-8,y+1,z+3), world(x+8,y+1,z+20)))
loops.pause(10)
def koniec():
player.say("WYGRAŁEŚ!")
player.teleport(pos(0,0,10))