JavaRush /Курсы /Claude Code SELF /Большой проект по шагам

Большой проект по шагам

Claude Code SELF
10 уровень , 2 лекция
Открыта

1. Шаг 1. Дожимаем ТЗ до конкретики

Портал разобран, карта есть — и Тёма со спокойной совестью возвращается к мечте. На руках у него честное ТЗ от Лёхи — пять пунктов: вид от первого лица, перемещение, поставить блок, убрать блок, небольшой замкнутый мир. Но прежде чем отдать это Сане, Лёха дожимает постановку ещё на шаг — до вещей, которые агенту реально нужны, чтоб не гадать.

— Пять пунктов — это костяк, — говорит Лёха. — Но давай добавим, чем именно управлять и в чём это живёт, иначе Саня опять пойдёт переспрашивать. Мышь крутит голову, WASD — ходьба. Клик левой — сломать блок, правой — поставить. Мир — плоская площадка из кубов, скажем, двадцать на двадцать, и стенка по краю, чтоб не свалиться в пустоту. И пусть это будет один index.html, открываешь двойным кликом — как все твои игрушки.

Тёма собирает финальное ТЗ — уже сам, Лёха только поправляет формулировки:

Собери браузерный voxel-мир в одном index.html.
  - вид от первого лица; мышь — осмотреться, WASD — ходьба;
  - мир: плоская площадка 20×20 из кубов, по краю стенка;
  - левый клик — сломать блок, на который смотрю; правый — поставить;
  - открывается двойным кликом по файлу, без установки.

2. Шаг 2. Саня ищет готовую библиотеку

Тёма уже тянется жать Enter, но Саня отвечает не кодом, а вопросом-предложением:

— Трёхмерный мир с нуля в браузере — это тысячи строк возни с графикой. Но есть готовая библиотека для 3D — three.js. Она берёт на себя всю тяжёлую часть: сцену, камеру, отрисовку кубов. Подключим её и соберём мир поверх — быстро и надёжно. Ок?

Тёма ухмыляется — знакомая история. Ровно как вчера с шахматами: не писать правила игры руками, а взять готовую chess.js, где всё уже придумано. Здесь то же самое, только для 3D.

— О, я это уже проходил, — говорит он вслух. — Не изобретать велосипед, взять готовое колесо. Давай через эту твою three.js.

Ему даже не нужно разбираться, что там внутри библиотеки. Главное усвоил ещё вчера: если задача типовая — почти наверняка кто-то уже написал под неё библиотеку, и агент её найдёт. Твоё дело — не писать движок, а попросить агента взять правильный готовый.

3. Шаг 3. Агент собирает мир по шагам

Саня не вываливает всё разом — идёт понятными шагами, и каждый Тёма видит в чате как отдельное действие:

● Подключаю three.js по CDN в index.html          # готовая 3D-библиотека
● Создаю сцену, камеру от первого лица, отрисовку  # scene, camera, renderer
● Строю пол 20×20 из кубов + стенку по краю        # мир из блоков
● Вешаю управление: мышь — обзор, WASD — ходьба    # PointerLockControls
● Добавляю «прицел»: на какой блок смотрю          # Raycaster
● Левый клик убирает блок, правый — ставит
● Готово. Открой index.html двойным кликом.

Тёма не вчитывается в имена — scene, Raycaster, ему это ничего не говорит. Но общую логику ловит: агент подключил готовую библиотеку, построил из кубов площадку, повесил на мышь и клавиши управление, а «прицел» — это чтоб понимать, на какой именно куб он смотрит, когда бьёт. Не магия из ниоткуда, а понятные куски, собранные из готового.

А потом приходит «готово». И вот тут Тёму на секунду накрывает: палец над запуском.

— Ну, — говорит он вслух. — Или сейчас, или весь год мечтал зря.

Жмёт.

Экран гаснет. Чёрный квадрат, доля секунды.

А потом картинка проявляется — и его будто втягивает внутрь. Он не смотрит на мир сверху, как на карту, — стоит прямо в нём, все от первого лица. Перед ним блоки. Жмёт «вперёд» — мир сдвигается, будто он правда сделал шаг. Поворачивает — вокруг разворачивается кубический ландшафт во все стороны.

— Да ладно, — выдыхает он.

Тянется поставить блок — блок встаёт ровно там, куда целился. Бьёт по соседнему — тот исчезает, оставив пустоту. Тёма не верит и проверяет: ставит ещё, ломает, ставит три подряд, лепит кривую косую башенку, обходит её кругом — башенка стоит, никуда не девается, он реально ходит вокруг.

— Год пялился на эту картинку, — говорит он в пустую комнату, обходя башенку ещё раз. — А теперь хожу по ней ногами.

Не «что-то похожее на». Не демка ради галочки, не картинка, на которую можно только смотреть. Именно та штука, про которую он год думал как про недостижимую, — и она слушается его рук, прямо сейчас. По крайней мере ее первая часть.

4. Результат: работающий проект

И прямо посреди этого его дёргает мысль. Не выходя из мира, он открывает рядом вторую вкладку — то самое утреннее видео из первого дня. Отматывает к доске желаний, к кривоватому скрину в углу. Ставит два экрана впритык.

Слева — кубик с доски его будущего. Справа — то, по чему он только что ходил.

Они одинаковые.

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

— «В будущем», — повторяет Тёма и хмыкает. — Ну вот оно и наступило. Сегодня.

В первый день между этим кубиком на доске и им самим лежала пропасть, которую он даже измерить не мог: за плечами ноль, ни строчки кода, ни одной собранной вещи. Тогда он бы не поверил ни на секунду. Огрызнулся и закрыл.

А дошёл-то он сюда не чудом. Тем же путём, что до змейки, до лендинга, до радара: захотел, срезал мечту до выполнимого ТЗ, поставил задачу словами, агент собрал, запустил, проверил руками. Тот же конвейер — просто на этот раз на другом его конце оказалась не игрушка, а та самая невозможная мечта.

— Пусть руками агента, — говорит он вслух. — Пусть маленькое. Пусть кривая башенка из десяти блоков. Но собрал-то я. Сам захотел, сам поставил задачу, сам довёл.

Год назад он бы такое без сарказма не выговорил. А сейчас — взял и сделал.

5. Тот же приём на больших задачах

И тут его накрывает вторая волна — уже не про прошлое, а про будущее. Раз голая коробка из кубов собралась за полчаса — а что, если не останавливаться? Он открывает чат и, не собираясь пока ничего запускать, набрасывает Сане следующую мечту, ту самую полную, из детства:

На будущее прикидка. Хочу дорастить этот мир до GTA-в-кубах:
  машины, по которым можно ездить; город из блочных зданий;
  прохожие; день сменяется ночью; миссии.

Саня отвечает спокойно, без «невозможно»:

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

Тёма перечитывает и ловит странное спокойствие. Год назад «GTA из кубиков» было волшебным заклинанием, за которым — пустота и «мне такое никогда не поднять». А сейчас под теми же словами — список задач, каждая по плечу. Мечта перестала быть недостижимой и стала просто работой которую нужно сделать. Он закрывает чат: сегодня — ядро, остальное потом. Но теперь он уверен, что «потом» реально будет.

1
Задача
Claude code, 10 уровень, 2 лекция
Недоступна
Перенести экспериментальный plugin из project scope в local scope
Перенести экспериментальный plugin из project scope в local scope
1
Задача
Claude code, 10 уровень, 2 лекция
Недоступна
Выбрать правильный scope для четырёх разных сценариев
Выбрать правильный scope для четырёх разных сценариев
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ