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

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

ЭтапВремяЧто делаем
Алгоритм20 минСхема и роли функций
Разбор API15 минon_chat, on_item_interacted, agent
Самостоятельно45 минПишем с подсказками
Итоги10 минИграем и рефлексия
Итого90 мин—

1 Как работает автомат

Это игровой автомат в мире Minecraft: три «окна» с блоками. Сначала ты строишь автомат, потом крутишь его железной лопатой. Программа быстро меняет блоки в слотах, агент «смотрит» результат и вызывает функцию check_win, если три блока совпали.

Алгоритм по шагам
  1. Команда «старт» (player.on_chat → on_chat): сообщение игроку; цикл строит корпус 5×5 из WOOL рядом с игроком; вычисляются три позиции слотов; в слоты ставится «дефолтный» блок; игроку выдаётся железная лопата.
  2. Использование лопаты (player.on_item_interacted(IRON_SHOVEL, …)): сообщение «прокрутка»; цикл ~10 раз ставит в каждый слот случайный блок из списка items (эффект барабана).
  3. Проверка агентом: агент телепортируется к каждому слоту и через agent.inspect_block(FORWARD) узнаёт, какой блок в «окне».
  4. Сравнение: если три блока одинаковые — вызывается check_win(block1, block2, block3), иначе — «Повезёт в другой раз».
  5. check_win: отдельная функция с if / elif — разные призы за алмазы, изумруды, золото; любой другой одинаковый набор — мягкий комфорт-приз.
global f_s, s_s, t_s: координаты слотов в мире нужны и при постройке, и при прокрутке. После on_chat их сохраняют в переменные с global, чтобы on_item_interacted их видел.
Список блоков: items = [DIRT, GOLD_BLOCK, DIAMOND_BLOCK, EMERALD_BLOCK]. Случайный индекс в Python: randint(0, len(items) - 1) — не items.length (это из JavaScript).

2 Какие функции нужны

ФункцияКогда вызывается
on_chat()Игрок пишет в чат «старт»
on_item_interacted()Игрок использует железную лопату (ПКМ)
check_win(b1, b2, b3)Три одинаковых блока после прокрутки

Внизу файла — две регистрации событий: player.on_chat("старт", on_chat) и player.on_item_interacted(IRON_SHOVEL, on_item_interacted).

🤖
Спроси Алису

Если непонятны global или randint — короткий вопрос.

🛠️ Собери автомат сам (с подсказками)

Не копируй решение сразу — иди по шагам. Тестируй в своём мире.

Выполнено шагов: 0 из 8
Шаг 1 Переменные вверху файла

items, default_slot (бревно), f_s, s_s, t_s = world(0,0,0) — заготовки координат слотов.

Шаг 2 on_chat — корпус

Двойной цикл 5×5: blocks.place(WOOL, positions.add(player.position(), pos(3, i, j))).

Подсказка 3 Слоты и global

global f_s, s_s, t_s. Три позиции на «этаже» i=2, j=1,2,3 → .to_world() сохранить в f_s, s_s, t_s. Поставить default_slot в каждый слот.

Шаг 4 Лопата и регистрация чата

mobs.give(mobs.target(NEAREST_PLAYER), IRON_SHOVEL, 1) и player.on_chat("старт", on_chat).

Шаг 5 on_item_interacted — прокрутка

Цикл 10 раз: в f_s, s_s, t_s ставить items[randint(0, len(items)-1)].

Подсказка 6 Агент читает слоты

Телепорт к слоту + inspect_block(FORWARD) три раза; agent.teleport_to_player() в конце.

Шаг 7 check_win и elif

Если три блока равны — check_win(...). Внутри — призы за DIAMOND, EMERALD, GOLD и ветка «else».

Шаг 8 Тест и игра

Чат старт → лопата → несколько прокруток. Покажи преподавателю джекпот или «не повезло».

🔐 Готовое решение — если застрял или разрешил преподаватель.

slot_machine.py

                

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

1. Что запускает постройку автомата?

2. Зачем global f_s, s_s, t_s?

💭 Рефлексия