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

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

ЭтапВремяЧто делаем
История про ИИ10 минЗачем нужен «умный» помощник
Типы данных15 минСтрока, число, логика + аннотации в def
Алгоритм исследователя15 минЦикл, детект преграды, запись блоков
Интерактив15 минТипы и порядок шагов
Мини-проект30 минПишем программу по подсказкам
Итоги5 минВикторина и рефлексия
Итого90 мин—

🧠 Что такое искусственный интеллект?

Искусственный интеллект (ИИ) — это когда компьютер или программа выполняет задачи, для которых обычно нужен человеческий «ум»: узнавать картинки, понимать речь, подсказывать маршрут, отвечать на вопросы.

ИИ не «магия» и не робот с чувствами — это алгоритмы: чёткие правила и данные. Чем больше примеров видит система, тем лучше она справляется. Голосовые помощники, рекомендации в видео и умная камера на телефоне — всё это разные формы ИИ.

На этом курсе мы сначала учимся думать как программисты: собирать логику из шагов. Агент в Minecraft, который сам идёт и записывает, что видит под ногами, — маленькая модель «исследователя»: он повторяет одно и то же действие, пока не встретит преграду, и в конце выдаёт отчёт. Позже мы будем пользоваться настоящими ИИ-помощниками (например, Алисой), чтобы быстрее разбираться в коде — но основа всегда в твоих решениях и типах данных.

🔗 Связь с прошлыми занятиями: переменные и типы мы уже видели в 1.2, цикл while и условия — в 1.3, движение агента — в разделе 2. Здесь всё собирается в один проект.

1 Типы данных и зачем их указывать

В Python (и в Minecraft Education) в одной переменной может лежать текст, число или да/нет. От типа зависит, что можно делать: числа складывают, строки — склеивают, логические значения — проверяют в if и while.

str
"трава", "Отчёт:"
Строка — текст в кавычках
number
0, 5, amount
Число — счётчики шагов, ID
bool
True, False
Игра идёт? game = True

В нашем проекте в функции отчёта мы явно пишем, какие типы ждём — это называется аннотация типов (подсказка для тебя и для редактора):

types_in_function.py
def show_report(trail: str, steps: number):
    # trail — длинная строка с названиями блоков
    # steps — сколько шагов прошёл агент
    player.say("Шагов: " + str(steps))
💡 Имя функции: в учебном примере иногда пишут print, но в Python это встроенная команда. Лучше назвать функцию show_report или finish_explore, чтобы не путаться.

Зачем указывать типы?

2 Алгоритм «Агент-исследователь»

Задача: программа работает, пока перед агентом нет блока. На каждом шаге агент смотрит, какой блок под ним, добавляет название в строку result, делает шаг вперёд и увеличивает счётчик. Когда впереди стена — цикл останавливается и вызывается функция с отчётом.

🧱 agent.detect
agent.detect(AgentDetection.BLOCK, FORWARD)
Возвращает True, если впереди есть блок (преграда).
👇 agent.inspect_block
block = agent.inspect_block(DOWN)
Число-ID блока под агентом. 0 — «блока нет».
🏷️ blocks.name_of_block
blocks.name_of_block(block)
Превращает ID в читаемое имя для отчёта (строка).
🚶 agent.move
agent.move(FORWARD, 1)
Один шаг вперёд после записи блока.
explorer_base.py
def show_report(a: str, b: number):
    player.say("Результат:")
    player.say(a)
    player.say("Блоков пройдено: " + str(b))
    player.say("Закончили :)")

amount = 0
result = ""
block = AIR
game = True

while game:
    if agent.detect(AgentDetection.BLOCK, FORWARD):
        game = False
        show_report(result, amount)
    block = agent.inspect_block(DOWN)
    if block == 0:
        player.say("Блока нету :(")
    else:
        result = "" + result + blocks.name_of_block(block) + ", "
    agent.move(FORWARD, 1)
    amount += 1
🗺️ Полигон для теста: построй ровную дорожку из разных блоков и поставь в конце стену на уровне глаз агента. Вызови агента, поверни его лицом к дорожке и запусти код (C → Run).

3 Как сделать программу «красочнее»

Базовый код уже работает — улучшения не меняют идею, а делают игру понятнее и интереснее:

Готовый «улучшенный» вариант — за паролем преподавателя в конце практики. Сначала собери базовую версию сам!

🔑 Сопоставь переменную и тип

result = ""
amount = 0
game = True
b: number в show_report

🧩 Расставь шаги одной итерации цикла

Один «круг» внутри while game (пока ещё не финиш):

? Проверить: если впереди блок — выключить game и показать отчёт
? Узнать блок под агентом (DOWN)
? Добавить имя блока в result или сообщить, что блока нет
? agent.move(FORWARD, 1)
? amount += 1
🤖
Спроси Алису (ИИ-помощник)

ИИ в жизни и в программировании — можно спросить простыми словами!

💬 Нажми на вопрос — откроется Алиса. Сравни её ответ с тем, что мы делаем с агентом-исследователем: и там, и там важны чёткие правила и данные.
💡 Свой вопрос: спроси, чем «умный» помощник отличается от нашей программы с while.
«Алиса, чем нейросеть отличается от обычной программы с if и while?»
⚠️ Не отправляй личные данные и не вставляй в чат пароли — только учебные вопросы с преподавателем.

🛠️ Мини-проект: Исследователь мира

Открой Python в Minecraft (C). Собери программу по шагам.

Выполнено шагов: 0 из 7
Шаг 1 Функция отчёта с типами

Создай def show_report(a: str, b: number): (или свои имена параметров с теми же типами). Внутри — несколько player.say: заголовок, строка a, число шагов через str(b).

Шаг 2 Переменные старта

amount = 0, result = "", game = True. Объясни соседу, какой тип у каждой переменной.

Шаг 3 Цикл while

while game: — тело цикла выполняется, пока game равно True.

Шаг 4 Стена впереди

if agent.detect(AgentDetection.BLOCK, FORWARD): → game = False и вызов show_report(result, amount).

Шаг 5 Запись блока

block = agent.inspect_block(DOWN). Если не 0 — добавь blocks.name_of_block(block) в result (склеивание строк).

Шаг 6 Шаг и счётчик

agent.move(FORWARD, 1) и amount += 1. Протестируй на дорожке со стеной в конце.

Шаг 7 «Красочная» версия

Добавь стартовые сообщения, красивый отчёт или прогресс каждые N шагов. Сверься с подсказками в блоке «Как сделать программу красочнее».

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

world_explorer_solution.py

                

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

1. Когда цикл while в нашем проекте останавливается?

2. Какой тип у переменной game?

3. Зачем писать b: number в функции отчёта?

4. Что делает agent.inspect_block(DOWN)?

💭 Рефлексия