🎯 Цели занятия

📋 План занятия

Этап занятияВремяЧто делаем
Оси X, Y, Z10 минЧто такое координаты в 3D-мире
Абсолютные координаты15 минworld(), точки в мире
Относительные координаты15 минpos(), posCamera()
Команды Python15 минplace, fill, teleport, position
Интерактив10 минСопоставление и задача на координаты
AI-помощник5 минСпроси у Алисы
Практика25 минСтроим и телепортируемся кодом
Итоги5 минВикторина и рефлексия
Итого90 мин—

1 Система координат в Minecraft

Мир Minecraft — это большой трёхмерный куб. Любая точка (блок) описывается тремя числами: X, Y и Z.

🔴 Ось X
Восток (+) / Запад (−)
🟢 Ось Y
Вверх (+) / Вниз (−)
🔵 Ось Z
Юг (+) / Север (−)
📍 Запись: (X, Y, Z) — например (100, 64, -20).
Y часто около 64 на равнине — это «уровень земли». Координаты можно посмотреть в игре (подсказка на экране или команда в чате).

2 Абсолютные координаты

Абсолютные координаты — это точка в мире, которая не меняется, куда бы ни ходил игрок. Начало мира — точка (0, 0, 0).

🌍 world(x, y, z)
world(10, 64, 20)
Создаёт позицию в мире: всегда один и тот же блок, независимо от того, где стоишь.
📍 player.position()
p = player.position()
Возвращает абсолютную позицию игрока (можно вывести в чат или сохранить в переменные).
absolute_coords.py
# Поставить блок земли в фиксированной точке мира
blocks.place(GRASS, world(5, 64, 5))

# Заполнить куб камнем от одной точки до другой (абсолютные углы)
blocks.fill(
    STONE,
    world(0, 64, 0),
    world(4, 66, 4),
    FillOperation.REPLACE
)

# Телепорт игрока в абсолютную точку
def go_home():
    player.teleport(world(0, 64, 0))
player.on_chat("дом", go_home)
💡 Когда удобно: строишь арену, дом или метку на карте — координаты записал один раз, программа работает везде одинаково.

3 Относительные координаты

Относительные координаты считаются от текущего положения игрока или агента. В Python для этого используют функции pos() и posCamera().

ФункцияОтносительно чегоПример
pos(x, y, z) Ног игрока, оси мира (восток/запад, вверх/вниз, юг/север) pos(3, 0, 0) — на 3 блока на восток
posCamera(x, y, z) Куда смотрит игрок: вперёд, назад, влево, вправо posCamera(0, 0, 5) — на 5 блоков вперёд
👣 pos(x, y, z)
blocks.place(GOLD_BLOCK, pos(0, 2, 0))
Блок на 2 выше ног игрока (над головой), независимо от того, куда ты смотришь.
👀 posCamera(x, y, z)
blocks.place(TORCH, posCamera(0, 0, 3))
Блок на 3 шага вперёд по направлению взгляда.
🤖 agent.teleport(pos, направление)
agent.teleport(pos(0, 5, 0), NORTH)
Телепорт агента на 5 блоков вверх от его текущей позиции; второй параметр — куда он смотрит.
➕ positions.add(a, b)
positions.add(player.position(), pos(0, 2, 0))
Складывает две позиции. Удобно: «где я стою» + «на 2 блока выше» = абсолютная точка над игроком.
relative_coords.py
# Блок прямо перед игроком (по взгляду)
blocks.place(STONE, posCamera(0, 0, 2))

# Платформа 5×5 под ногами игрока (относительный fill)
blocks.fill(
    GRASS,
    pos(-2, -1, -2),
    pos(2, -1, 2),
    FillOperation.REPLACE
)

# Поднять игрока на 10 блоков (относительный телепорт)
def jump_up():
    player.teleport(pos(0, 10, 0))
player.on_chat("вверх", jump_up)
📌 Помни: после перемещения игрока или агента относительная точка pos(0, 2, 0) указывает уже на другое место в мире — она «ездит» вместе с тобой!

4 Сводка команд для координат

Краткая шпаргалка — что за что отвечает:

КомандаТип координатЧто делает
world(x, y, z)АбсолютныеТочка в мире по числам X, Y, Z
pos(x, y, z)ОтносительныеСмещение от ног игрока по осям мира
posCamera(x, y, z)ОтносительныеСмещение от игрока по направлению взгляда
blocks.place(БЛОК, позиция)ЛюбыеСтавит один блок в указанную позицию
blocks.fill(БЛОК, от, до, REPLACE)ЛюбыеЗаполняет прямоугольный объём блоками
blocks.replace(...)ЛюбыеМеняет один тип блока на другой в области
player.teleport(позиция)ЛюбыеПеремещает игрока
agent.teleport(позиция, сторона)Обычно pos()Перемещает агента и поворачивает его
player.position()—Узнать, где сейчас игрок (абсолютные числа)
positions.add(p1, p2)СмешанныеСложить две позиции (тип результата как у первой)
🤖 Агент и координаты: чтобы двигать агента «вперёд» и строить, как на занятиях 2.1–2.2, по-прежнему удобны agent.move() и agent.place(). Координаты нужны, когда строишь без пошагового хода — сразу целую фигуру или телепорт.

🔑 Абсолютные или относительные?

Выбери тип координат для каждой команды:

world(0, 64, 0)
pos(0, 5, 0)
blocks.place(GRASS, world(10, 64, 10))
blocks.place(GOLD_BLOCK, posCamera(0, 0, 4))
player.position()

🧮 Посчитай координаты

Игрок стоит в точке (10, 64, 20). Куда попадёт блок при blocks.place(STONE, pos(5, 3, -2))?

Подсказка: к X прибавь 5, к Y — 3, к Z — −2.

(5, 61, 22)
(15, 67, 18)
(15, 61, 18)
🤖
Спроси Алису (ИИ-помощник)

Нажми на вопрос — Алиса ответит тебе прямо сейчас!

💬 Нажми на любой вопрос — откроется Алиса с готовым ответом.
💡 Хочешь спросить что-то своё? Открой Алису и задай вопрос про координаты или Python в Minecraft.
«Алиса, чем pos отличается от world в MakeCode Python?»
⚠️ Никогда не отправляй Алисе личные данные — вопросы обсуждай с родителями и преподавателем.

🛠️ Практика: координаты в Minecraft

Открой редактор кода (C), выбери Python. Выполни задания на плоском мире.

Выполнено: 0 из 6
Задание 1 Абсолютная точка

По команде чата метка поставь блок светящегося камня в абсолютную точку world(5, 64, 5).

Задание 2 Над головой

По команде шапка поставь золотой блок на 2 блока выше игрока: blocks.place(GOLD_BLOCK, pos(0, 2, 0)).

Задание 3 Вперёд по взгляду

По команде дорога поставь 5 блоков камня в линию: используй цикл и posCamera(0, -1, i) для i от 1 до 5 (под ногами перед тобой).

Задание 4 Маленькая площадка

По команде площадка заполни область травой от world(0, 63, 0) до world(6, 63, 6) через blocks.fill и FillOperation.REPLACE.

Задание 5 Телепорт агента

По команде агент телепортируй агента на 3 блока вверх от его позиции: agent.teleport(pos(0, 3, 0), NORTH).

🚀 Бонус Где я?

По команде где сохрани player.position() в переменную и выведи в чат сообщение с координатами X, Y, Z (можно через несколько player.say()).

📝 Проверь себя

1. Какая функция задаёт абсолютную точку в мире?

2. Что означает ось Y?

3. Как поставить блок на 4 шага вперёд по направлению взгляда?

4. Команда blocks.fill нужна, чтобы…

5. Относительные координаты pos(0, 0, 0) — это…

💭 Рефлексия

Напиши, что тебе понятнее — абсолютные или относительные координаты и почему: