🎯 Цели занятия
- Собрать мини-проект «Шахтёр-стратег» с функцией, которая возвращает значение
- Научить агента выбирать направление копания по типу блока
- Повторить переменные, условия, цикл «пока» и смешанные координаты
- Понять, зачем сохранять координаты базы для возврата
📋 План занятия
| Этап | Время | Что делаем |
|---|---|---|
| Орг. момент | 5 мин | История «Добыча с умом» |
| Теория | 15 мин | Руды, return, алгоритм шахтёра |
| Интерактив | 15 мин | Закрепляем понятия |
| Мини-проект: шаги 1–4 | 25 мин | Переменные, chooseDirection(), digStep() |
| Мини-проект: шаги 5–7 | 25 мин | Цикл «пока», возврат на базу |
| Бонус и итоги | 5 мин | Дополнения, рефлексия |
| Итого | 90 мин | — |
1 Сюжет: Добыча с умом
⛏️ Обычный шахтёр копает прямо вниз — и часто пропускает богатые жилы руды.
Шахтёр-стратег действует иначе: перед каждым ударом кирки он сканирует 3 блока впереди — слева, по центру и справа. Если видит уголь, железо или алмаз — копает туда. Если руды нет — спускается вниз.
Когда рюкзак полон — агент возвращается на базу по сохранённым координатам.
2 Руды, которые ищет агент
В нашем проекте «ценные» блоки — это руда. Агент проверяет их ID (номер блока в Minecraft):
Три блока «впереди» — схема
Агент смотрит вперёд. Мы проверяем три клетки на уровне ног:
слева
вперёд
справа
| Идея проекта | Блоки MakeCode |
|---|---|
| Переменные | depth (глубина), oreCount (найдено руды) |
| Условие | если ID блока = 16 или 15 или 56 → копать туда |
| Функция с return | chooseDirection → вернуть «вперёд» / «влево» / «вправо» / «вниз» |
| Главный цикл | пока depth < 30 — бурение продолжается |
| База (абсолютные координаты) | В начале сохранить baseX, baseY, baseZ → телепорт домой |
3 Новое: функция возвращает значение (return)
Раньше функции только делали действия. Теперь функция может ответить, что выбрала:
вернуть отдаёт текст или число тому, кто вызвал функцию.Пример:
направление = вызвать chooseDirection — переменная получит «вперёд», «влево», «вправо» или «вниз».
-- При команде чата "шахта":
depth = 0
oreCount = 0
baseX, baseY, baseZ = позиция агента (абсолютные)
пока depth < 30:
направление = вызвать chooseDirection
вызвать digStep направление
depth = depth + 1
если инвентарь полон → телепорт (baseX, baseY, baseZ)
сказать "Глубина: " + depth + ", руда: " + oreCount
-- Функция chooseDirection:
если впереди руда → вернуть "вперёд"
иначе если слева руда → вернуть "влево"
иначе если справа руда → вернуть "вправо"
иначе → вернуть "вниз"
4 Интерактив: закрепляем
💎 Что считаем рудой?
К каким блокам агент должен «потянуться» в первую очередь?
📤 Зачем нужен return?
Что делает блок вернуть "влево" в функции chooseDirection?
⬇️ Нет руды впереди
Агент проверил 3 блока — нигде нет угля, железа и алмаза. Куда копать?
📋 Порядок одного шага бурения
Перетащи шаги в правильном порядке:
- Увеличить depth на 1
- направление = вызвать chooseDirection()
- Вызвать digStep(направление)
⛏️ Мини-проект: «Шахтёр-стратег»
Педагог может подготовить участок с камнем и несколькими жилами руды (Creative → расставить блоки). Или копай в обычном мире. Собирай проект по шагам.
1 Подготовка и переменные
2 Функция isOre() — есть ли руда?
если ID блока в ~0 ~−1 ~1 = 16 прямо в chooseDirection. Функция isOre — для аккуратного кода.3 Функция chooseDirection() — с return!
4 Функция digStep(направление)
изменить oreCount на 1. Для тоннеля высотой 2 блока: сначала разруши блок на уровне головы, потом на уровне ног (как в занятии 2.3).5 Команда «шахта» и цикл «пока»
depth станет 30.6 Возврат на базу и запуск
⭐ Бонусные задания
📝 Проверь себя
1. Зачем переменная depth?
2. Что делает chooseDirection()?
3. Когда главный цикл бурения останавливается?
4. Зачем сохранять baseX, baseY, baseZ?
5. Как запустить «Шахтёр-стратег»?
💭 Рефлексия
Нажми на вопрос — Алиса ответит!