https://pastein.ru/t/1bV

  скопируйте уникальную ссылку для отправки

Загрузка данных


from mcpi.minecraft import Minecraft
from collections.abc import Iterable

import time
import random
import collections
import mcpi.block as block


collections.Iterable = Iterable

mc = Minecraft.create()
pos = mc.player.getTilePos()

x = pos.x + 1
y = pos.y
z = pos.z

# Создаём ограниченную область из кирпича
mc.setBlocks(x, y, z, x + 15, y, z + 10, 45)
mc.setBlocks(x + 1, y, z + 1, x + 14, y, z + 9, 0)

# Создаём 10 лазуритов в случайном порядке расположения в области
for i in range(11):
    x1, z1 = x + random.randint(1, 14), z + random.randint(1, 9)
    mc.setBlock(x1, y, z1, 22)

game_over = False  # Флаг для отслеживания состояния игры
t = 15  # Изменено на обычный таймер
l = 0
while t > 0:
    pos = mc.player.getTilePos()
    if x <= pos.x <= x + 15 and z <= pos.z <= z + 10:
        mc.postToChat("До завершения осталось t = {}".format(round(t, 2)))
        t -= 1  # Уменьшаем таймер на 1 секунду

        # Проверяем, стоим ли мы на лазурите
        if mc.getBlock(pos.x, pos.y - 1, pos.z) == 22:
            mc.setBlock(pos.x, pos.y - 1, pos.z, 0)
            l += 1
            mc.postToChat("Вы собрали лазурита l = {}".format(l))
            t += 1  # Увеличиваем таймер на 1 секунду при сборе лазурита

    time.sleep(1)  # Изменил задержку на 1 секунду

    if t == 0 and l < 10:
        mc.postToChat("Вы проиграли!")
        game_over = True
        break

    if l >= 10:
        mc.setBlocks(x - 20, y, z - 20, x + 20, y, z + 20, 0)
        mc.postToChat("Вы перешли на второй уровень ")
        break

if not game_over:  # Проверка перед выполнением следующего уровня
    pos = mc.player.getTilePos()
    x, y, z = pos.x + 1, pos.y, pos.z
    mc.setBlocks(x - 2, y, z, x + 5, y, z + 10, 5)
    mc.setBlocks(x + 5, y + 1, z, x + 7, y + 1, z + 10, 5)
    mc.setBlocks(x + 10, y + 1, z, x + 15, y + 1, z + 8, 5)
    mc.setBlocks(x + 15, y + 2, z + 3, x + 25, y + 2, z + 5, 5)
    mc.setBlocks(x + 25, y + 2, z + 3, x + 25, y + 2, z + 20, 5)
    mc.setBlocks(x + 25, y + 3, z + 20, x + 35, y + 3, z + 20, 5)

    for i in range(20):
        mc.setBlocks(x + 35, y + 3 + i, z + 20 + i, x + 35, y + 3 + i, z + 25 + i, 5)
        mc.setBlocks(x + 35, y + 3 + i, z + 23 + i, x + 35, y + 3 + i, z + 24 + i, 0)
        z += 3

    for i in range(20):
        mc.setBlocks(x + 35 + i, y + 23 + i, z + 44, x + 36 + i, y + 23 + i, z + 44, 5)

    mc.setBlocks(x + 55, y + 43, z + 44, x + 61, y + 43, z + 50, 5)
    mc.setBlocks(x + 58, y + 44, z + 47, x + 59, y + 44, z + 48, 41)
    while True:
        pos = mc.player.getTilePos()
        if mc.getBlock(pos.x, pos.y - 1, pos.z) == 41:
            x, y, z = pos.x - 58, pos.y - 44, pos.z - 48
            mc.player.setTilePos(pos.x - 58, pos.y - 44, pos.z - 48)
            mc.postToChat("Вы перешли на третий уровень ")
            mc.setBlocks(x - 40, y, z - 65, x + 60, y + 50, z + 65, 0)
            break