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